OnDrawDataCell - czemu nie działa?

0

Witam..

Potrzebuje wyróżniać wiersze zaleznie od wartości jednego z pól - przykład znajduje się w pomocy:

procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState);

begin
  if Table1.FieldByName('Size').AsFloat > 10 then
    DBGrid1.Canvas.Font.Color := clRed;
  DBGrid1.DefaultDrawDataCell(Rect, Field, State);
end;

Teoretycznie powinien zmienić kolor fontu w wybranych wierszach, ale nie działa...

Jakieś pomysły?

Pozdrawiam

0

Wrzuć to do OnDrawColumnCell i zobacz wtedy.

0
Młody napisał(a)

Wrzuć to do OnDrawColumnCell i zobacz wtedy.

Tak właśnie w przypływie rozpaczy zrobiłem, tylko juz nie zdażyłem wczoraj napisać. Oczywiście działa, tylko dla odmiany przestało działać .DefaultDrawing - tzn czy jest false, czy true, to zawsze ustawia kolory w/g mojego schematu.. no, ale to już drobiazg, można tym sterować inaczej.

Jak już przy tym temacie jesteśmy, to (może ktoś będzie szukał kiedyś) warto zaznaczyć, że jeśli ustawimy własny kolor tła dla wiersza DBGrid, to 'nie działa' wyróżnienie aktualnego wiersza/komórki. Jesli mamy dgIndicator = false to nie wiadomo który wiersz jest aktualnie wybrany. Musimy więc sami obsłużyć wyróżnienie wybranego wiersza, w OnDrawColumnCell, tam gdzie ustawiamy kolorki zależne od wartości pola, wstawiamy kod:

if State = [gdSelected] then
begin
DBGrid1.Canvas.Brush.Color := clYellow;
DBGrid1.Canvas.Font.Color := clBlack;
end;

I załatwione

1 użytkowników online, w tym zalogowanych: 0, gości: 1