Problem dotyczy komponentu DBGrid.
Probuję pokolorować co drugi wiersz oraz zmienić wygląd belki okreslającej, ktory wiersz jest zaznaczony.
Tabela powiązana z siatka ma pole "Autonumeracja" - o wlasności autoincrease, ktore to pole jest wykorzystywane do tego, czy wiersz ma byc zakolorowany (jeśli ma numer parzysty - to koloruje, jesli nie - top zostawiam w spokoju).
W tym celu obsługuję zdarzenie ONDrawColumnCell i umieszczam tam następujący kod:
procedure TOknoGlowne.DBGrid_towaryDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
var a:byte;
b:byte;
begin;
//w co drugim wierszu zmieniam kolor
if State<>[gdSelected] then *jesli wiersz nie jest akurat zaznaczony
begin;
*i jesli jego numer jest parzysty....
if ModulDanych.Table_towary.FieldByName('Autonumeracja').AsInteger mod 2 = 0 then
begin;
*to zmieniam kolor tla i liter
DBGrid_towary.canvas.brush.color:=clInfoBK;
DBGrid_towary.canvas.font.color:=clBlack;
end;
end;
if State=[gdSelected] then *jesli wiersz jest zaznaczony - to zmieniam domyslne kolory zaznaczenia na inne
begin;
DBGrid_towary.canvas.brush.color:=clBackground;
DBGrid_towary.canvas.font.color:=clWhite;
end;
DBGrid_towary.DefaultDrawDataCell(Rect,Column.Field,State);
end;
kod dziala, ale pojawia sie problem:
NIC SIĘ NIE ZMIENIA W KOLORZE PIERWSZEJ WYŚWIETLANEJ KOLUMNY !!! (DataCol=0).
DLACZEGO ? JAK TO POPRAWIĆ ?!!!
Login :[[ --Login