Strona 1 z 1

Kolorowanie zaznaczonego wiersza w DBGrid

Nowy postNapisane: wtorek, 29 lipca 2008, 22:32
przez Corvis
Witam,

Wie ktoś może jak to zrobic ?? Chodzi dokładnie o kliknieciu w wiersz a on ma sie zakolorowac na jakis kolor.

Pozdrawiam

Re: Kolorowanie zaznaczonego wiersza w DBGrid

Nowy postNapisane: środa, 30 lipca 2008, 09:35
przez Cyfrowy Baron
Takie rzeczy można robić tylko w TStringGrid. DBGrid jest przewidziany do pracy z Data Base Engine DBE.
Do tworzenie takich efektów niezbędne jest zdarzenie OnDrawCell, które umożliwia wogóle modyfikację tabeli. Problem w tym, że DBGrid takiego zdarzenia nie posiada, ma za to zdarzenie OnDrawDataCell, ale w pomocy jest napisane:

Do not write an OnDrawDataCell event handler. OnDrawDataCell is obsolete and included for backward compatibility. Instead, write an OnDrawColumnCell event handler.


Więc nic z tego, nie można z tego zdarzenie skorzystać.
Sprawa jest nawet bardziej skomplikowana, gdyż DBGrid nie zwraca numeru wiersza, wiec nawet gdyby odwołać się do Canvas tego obiektu, to nie ma jak pobrać tekstu z poszczególnych komórek.

Jedyne co udało mi się zrobić to pokolorować całą kolumnę korzystając ze zdarzenie OnDrawColumnCell:

Kod: Zaznacz cały
void __fastcall TForm1::DBGrid1DrawColumnCell(TObject *Sender,
     const TRect &Rect, int DataCol, TColumn *Column, TGridDrawState State)
{
  if(Column->Index == 1)
  {
    Column->Color = clYellow;
  }
}


Pobranie adresu kolumny nie jest wiec problemem, ale nie znalazłem funkcji zwracającej adres wiersza, ani takiej która by zwracała adres wybranej komórki, więc nie wiem jak pokolorować pojedynczą komórkę. Nie przesądzam oczywiście sprawy, być może istnieje jakaś funkcja zwracająca numery komórek, jeżeli tak, to pokolorowanie takiej komórki nie będzie problemem.

Re: Kolorowanie zaznaczonego wiersza w DBGrid

Nowy postNapisane: środa, 30 lipca 2008, 11:02
przez wargo
A nie można by skopiować funkcji z działającego komponentu z tą funkcją do pliku z innym komponentem?
Oczywiście każdy twory inną strukture widoku i pól, więc trzeba by było pozmieniac ale można by spróbować?

Re: Kolorowanie zaznaczonego wiersza w DBGrid

Nowy postNapisane: środa, 30 lipca 2008, 11:47
przez Cyfrowy Baron
Nie mam pojęcia o czym ty właściwie prawisz?!?

Re: Kolorowanie zaznaczonego wiersza w DBGrid

Nowy postNapisane: niedziela, 3 sierpnia 2008, 13:55
przez wargo
Cyfrowy Baron napisał(a): prawisz?!?

eeeee, co?

Chodziło mi oskopiowanie funkcji z pliku h odpowiedzialnej za potrzebną operacje kolorowania.

Re: Kolorowanie zaznaczonego wiersza w DBGrid

Nowy postNapisane: niedziela, 3 sierpnia 2008, 14:34
przez Cyfrowy Baron
"prawisz" - takie staropolskie wyrażenie znaczy tyle co mówisz. :D

Chodziło mi oskopiowanie funkcji z pliku h odpowiedzialnej za potrzebną operacje kolorowania.


Nie... no bądź poważny... :lol: :lol: :lol: :lol: :lol:

Tak się nie buduje bibliotek, gdyby tak można było, wystarczyłaby jedna biblioteka uniwersalna do obsługi całego API.