Grundsätzlich sollte die Textfarbe immer einen möglichst grossen Kontrast zur Hintergrundfarbe haben.
Du änderst zwar die Farbe des Hintergrunds, aber nicht die Farbe des Textes (Vordergrund).
Mit folgendem Code bleibt die Textfarbe im Kontrast zum Hintergrund
Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if ARow>0 then
begin
case StringGridColorArray[ARow] of
0: StringGrid1.Canvas.Brush.Color := $00DDE2FB;
1: StringGrid1.Canvas.Brush.Color := $00E0FFFF;
2: StringGrid1.Canvas.Brush.Color := $00C6FBDA;
else
StringGrid1.Canvas.Brush.Color := clWindow;
end;
StringGrid1.Font.Color := BlackWhiteContrastColor(StringGrid1.Canvas.Brush.Color); // <====
StringGrid1.Canvas.FillRect(Rect);
StringGrid1.Canvas.TextOut(Rect.Left + 2, Rect.Top + 1, StringGrid1.Cells[ACol, ARow]);
end;
end;
Code-Library:
Kontrastfarbe ermitteln