![]() |
TDBAdvGrid flackert bei Query.Refresh
Aloah Gemeinde. Ich nutze das TMS TDBAdvGrid zur Anzeige einer Hand voll Daten aus meiner DB. Da sich diese Daten regelmäßig ändern, löse ich alle 2 Sekunden ein Refresh der zugrundeliegenden Query aus. Dabei zeichnet sich das Grid natürlich neu, aber es flackert verdammt unschön dabei. Insbesondere in der Titelzeile und der Rahmen fallen dabei sehr auf, was ich so ungerne lassen würde.
Bisherige Maßnahmen die ich versucht habe:
Delphi-Quellcode:
Und praktisch alle Kombinationen davon zusammen. Es flackert einfach munter weiter, und scheint sich nicht die Bohne von obigen Maßnahmen betroffen zu fühlen :(
MyGrid.BeginUpdate;
Query.Refresh; MyGrid.EndUpdate; (*****************************************) Query.DisableControls; Query.Refresh; Query.EnableControls; (*****************************************) LockControl(MyGrid, true); // http://www.swissdelphicenter.ch/torry/showcode.php?id=1301 Query.Refresh; LockControl(MyGrid, false); Das Grid hat den Standardlook den es hat, wenn man es aufs Formular zieht, abgesehen vom OwnerDraw, da ich dort die Texte von Hand zentriert zeichne. Aber auch ohne besondere Kniffe:
Delphi-Quellcode:
Was könnte ich dem Grid denn noch mal so versuchen in die Zeichenspeichen zu werfen?
procedure TfrmAuftraege.gOrdersCustomCellDraw(Sender: TObject; Canvas: TCanvas; ACol, ARow: Integer; AState: TGridDrawState; ARect: TRect; Printing: Boolean);
var s: String; w, h: Integer; c: TColor; begin if (ARow = 0) or (ACol = 0) then Exit; s := gOrders.Cells[ACol, ARow]; w := Canvas.TextWidth(s); h := Canvas.TextHeight(s); if Odd(ARow) then c := gOrders.Bands.PrimaryColor else c := gOrders.Bands.SecondaryColor; Canvas.Brush.Color := c; Canvas.FillRect(Rect(ARect.Left, ARect.Top, ARect.Right-1, ARect.Bottom-1)); case gOrders.Columns[ACol].Alignment of taLeftJustify : Canvas.TextOut(ARect.Left+5, ARect.Top+(ARect.Bottom-ARect.Top-h) div 2, s); taRightJustify: Canvas.TextOut(ARect.Right-w-5, ARect.Top+(ARect.Bottom-ARect.Top-h) div 2, s); taCenter : Canvas.TextOut(ARect.Left+(ARect.Right-ARect.Left-w) div 2, ARect.Top+(ARect.Bottom-ARect.Top-h) div 2, s); end; end; |
AW: TDBAdvGrid flackert bei Query.Refresh
|
AW: TDBAdvGrid flackert bei Query.Refresh
Ups, vergessen zu erwähnen. Ist bei mir immer an, erster Handgriff nach neuem Formular bzw. Kompos die es haben :)
|
AW: TDBAdvGrid flackert bei Query.Refresh
Ich ziehe TextRect gegenüber TextOut immer vor, da es tatsächlich nur im Rect schreibt. Ansonsten werden die Trennlinien zwischen den Zellen ggf. mit beschriftet ;-)
Zur Frage: Was passiert, wenn du das Grid nicht selbst zeichnest, sondern die Standardmethoden machen lässt? Flackerts dann auch? |
AW: TDBAdvGrid flackert bei Query.Refresh
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:33 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