Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Stringgrid flackert (https://www.delphipraxis.net/32552-stringgrid-flackert.html)

MarcusB 25. Okt 2004 09:08


Stringgrid flackert
 
Hallo,

ich habe mal wieder ein Problemchen.

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? :gruebel:

shmia 25. Okt 2004 09:21

Re: Stringgrid flackert
 
Zitat:

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.

MarcusB 25. Okt 2004 10:00

Re: Stringgrid flackert
 
Habe Deinen Code gerade mal ausprobiert, das Flackern ist auch weg, allerdings ist der Text der 1. Zeile nicht rot.

Wenn ich irgendwo z.B.
Delphi-Quellcode:
grid.Cells[0,0] := 'abc';
aufrufe, wird doch das OnDrawEvent aufgerufen, oder?


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz