Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#10

Re: Nieder mit dem Stringgrid-Fokus

  Alt 27. Feb 2007, 16:12
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
Andreas
  Mit Zitat antworten Zitat