Lazarus.
Problem polega na tym, że potrzebuję pokolorować wybrane wiersze w gridzie w zależności od treści.
Z uwagi na kiepskie przewijanie standardowego DBGrid postanowiłem zastąpić go KDBGrid, a w nim we właściwościach nie ma zdarzenia onDrawColumnCell, zamiast tego jest onDrawCell.
W standardowym DBGrid miałem to zrobione tak i wszystko działa jak należy:
procedure TForm1.KDBGrid1DrawColumnCell(Sender: TObject; const R: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if ZQuery1.FieldByName('test').AsString='YES' then
DBGrid1.Canvas.Font.Color:=clred;
DBGrid1.Canvas.FillRect(Rect);
DBGrid1.DefaultDrawColumnCell (Rect, DataCol, Column, State);
end;
jednak w przypadku grida KDBGrid zrobiłem tak i niestety to nie działa.
procedure TForm1.KDBGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; R: TRect; State: TKGridDrawState);
begin
with TKCustomGrid(Sender) do
begin
if ZQuery1.FieldByName('test').AsString='YES' then
KDBGrid1.Canvas.Font.Color:=clred;
Cell[ACol, ARow].ApplyDrawProperties;
CellPainter.GraphicHPadding := 3;
CellPainter.DefaultDraw;
end;
end;
Efekt jest taki, że w sytuacji gdy wiersz z wartością pola "test" = "YES" będzie na 1 pozycji to wszystko jest czerwone zamiast tylko wybranych wierszy.
Gdy jest inaczej to nic nie zmienia koloru.
Przeczytałem cały internet, i nie znalazłem żadnej podpowiedzi.
Pewnie jestem za cienki w uszach, dlatego muszę prosić o ratunek.
Pomoże ktoś?