Zitat von
MarcusB:
Ich habe ein Stringgrid und möchte, dass der Text der 1. Zeile in rot erscheint.
Daher habe ich in das OnDrawEvent des Grids folgendes eingebaut:
Delphi-Quellcode:
procedure TForm1.gridDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if (ARow=0) then
grid.Font.Color := clRed
else
grid.Font.Color := clBlack;
end;
Dummerweise ist nun die 2.(!) Zeile rot und das ganze Grid flackert, als würde es permanent neu gezeichnet.
Was habe ich denn falsch gemacht?
Du hast Properties, die global für das ganze Grid gelten verändert. Das bewirkt ein Neuzeichnen
des gesamten Grids.
Du musst mit dem
Canvas des Grids arbeiten:
Delphi-Quellcode:
procedure TForm1.gridDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
canvas : TCanvas;
begin
canvas := grid.Canvas; // temp. Variable zwecks Geschwindigkeit
if (ARow=0) then
canvas.Font.Color := clRed
else
canvas.Font.Color := clBlack;
end;
PS: guckst du da:
http://www.delphipraxis.net/internal...ct.php?t=35695
falls du auch den Hintergrund einfärben willst und die Schriftfarb im Kontraste zum Hintergrund sein soll.