Thema: Delphi Stringgrid flackert

Einzelnen Beitrag anzeigen

shmia

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

Re: Stringgrid flackert

  Alt 25. Okt 2004, 09:21
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.
Andreas
  Mit Zitat antworten Zitat