"Schuld" ist die Kombination aus
VCL/Windows-
API die im alltäglichen Programmiererleben so praktisch ist
Würdest du in den Windowsfarbeinstellungen eine andere Farbe für markierte Elemente nehmen, sähe das Ganze anders aus.
Aber helfen wird wahrscheinlich das hier:
Delphi-Quellcode:
procedure TForm10.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if not(gdSelected in State) then
begin
if query1.FieldByName('Gültig bis Datum').Value <= Date() then
dbgrid1.Canvas.Font.Color := $000000DF
else
dbgrid1.Canvas.Font.Color := clblack;
// falls weder P1 noch P2, dann bleibt die Zeile wie Standard
dbgrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
end;
Ist jetzt aus der Erinnerung, müsste aber hinkommen, ansonsten schau dir den Typ TGridDrawState mal in der
OH an.