Kann ich nicht irgendwie aus DrawColumnCell in den vorhergehenden Datensatz schauen?
Nein. Die Komponente merkt sich nicht, was in der Zelle steht.
Du musst die Lookupliste nach jedem Filtern neu erstellen.
Erstelle eine Liste der eindeutigen Datumswerte, d.h. jeder Datumswert kommt nur 1x vor.
Im DrawDataCell-Ereignis steht dann:
Delphi-Quellcode:
procedure TMyForm.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
begin
if Field is MyDateField then
If Odd (MyDateList.IndexOf(Field.DisplayText)) Then
(Sender as TDBGrid).Canvas := ThisColor
Else
(Sender as TDBGrid).Canvas := ThatColor;
(Sender as TDBGrid).DefaultDrawDataCell(Rect,Field,State);
end;
Wenn Du oft mit Grids und Datenmengen arbeitest, solltest Du dir eine Komponente zulegen, die dir bei deinen speziellen Bedürfnissen hilft.
Wir verwenden DevExpress, damit kann man eigentlich so gut wie alles machen.