![]() |
Stringgrid flimmert
Liste der Anhänge anzeigen (Anzahl: 1)
Ich bin dabei mit StringGrid.Objects zu experimentieren.
Jetzt habe ich ein kleines Test Form geschrieben und folgendes passiert. wenn ich im OnDrawCell Ereignis eine if Abfrage habe dann flimmert das Grid nehme ich es raus dann ist alles schön :gruebel: Flimmert
Delphi-Quellcode:
Flimmert nicht
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState); begin if (gdFixed in State) then begin StringGrid1.Canvas.Brush.Color := clBtnFace; StringGrid1.Font.Color := ClBlack; StringGrid1.Canvas.FillRect(Rect); StringGrid1.Canvas.TextOut(Rect.Left+1, Rect.Top+1, (StringGrid1.Cells[ACol,ARow])); end else begin if assigned(StringGrid1.Objects[ACol, ARow]) then StringGrid1.Canvas.Brush.Color := (StringGrid1.Objects[ACol,ARow] As TDataCell).CellColor ; StringGrid1.Font.Color := ClWhite; StringGrid1.Canvas.FillRect(Rect); StringGrid1.Canvas.TextOut(Rect.Left+1, Rect.Top+1, (StringGrid1.Cells[ACol,ARow])); end; end;
Delphi-Quellcode:
Als Anlage noch mal das Form
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState); begin { if (gdFixed in State) then begin StringGrid1.Canvas.Brush.Color := clBtnFace; StringGrid1.Font.Color := ClBlack; StringGrid1.Canvas.FillRect(Rect); StringGrid1.Canvas.TextOut(Rect.Left+1, Rect.Top+1, (StringGrid1.Cells[ACol,ARow])); end else } begin if assigned(StringGrid1.Objects[ACol, ARow]) then StringGrid1.Canvas.Brush.Color := (StringGrid1.Objects[ACol,ARow] As TDataCell).CellColor ; StringGrid1.Font.Color := ClWhite; StringGrid1.Canvas.FillRect(Rect); StringGrid1.Canvas.TextOut(Rect.Left+1, Rect.Top+1, (StringGrid1.Cells[ACol,ARow])); end; end; |
Re: Stringgrid flimmert
Versuch mal
Delphi-Quellcode:
im OnCreate deines Formulars.
StringGrid1.DoubleBuffered := True
[EDIT] Ich sehe grad, was du mit Flimmern meinst. Dein Programm scheint die Zellen immer wieder neu zu zeichnen. Hast du irgendwo ne Endlosschleife gebaut? Ich würde mal schaun, wo er immer wieder reinspringt. Hab jetzt hier kein Delphi installiert, sonst würde ich selbst mal testen! |
Re: Stringgrid flimmert
Es ist keinerlei Abfrage auf Row und Col zu sehen. Kein Wunder, dass das "flimmert". DoubleBuffered oder ähnliches braucht man da normalerweise nicht.
|
Re: Stringgrid flimmert
Zitat:
Das Flimmern kommt hier zustande:
Delphi-Quellcode:
Klitzekleine Änderung, und das Flimmern hört auf:
StringGrid1.Font.Color := ...
Delphi-Quellcode:
StringGrid1.Canvas.Font.Color := ...
|
Re: Stringgrid flimmert
Besten Dank.
Währe ich nie drauf gekommen mit dem Canvas |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz