![]() |
Neuzeichnen TScrollbox, aber Fensterflackern
Hallo,
eine bestehende Applikation benutzt eine TScrollBox, diese schmiert bekanntlich beim Scrollen. Mit diesem Code am Anfang der betreffenden Unit habe ich einen MessageHandler reingeschmuggelt. Der wird auch sauber aufgerufen.
Delphi-Quellcode:
Den CartScrollBoxHandle hole ich mir bei Form.Onactivate:
type TScrollBox = class(Forms.TScrollBox)
private procedure WMVScroll(var Message: TWMVScroll); message WM_VSCROLL; end; type MainForm = class(TForm) ... //geklaut von TCustomListView.WMVScroll !! procedure TScrollBox.WMVScroll(var Message: TWMVScroll); var Before, After: Integer; begin Before := GetScrollPos(ScrollboxHandle, SB_VERT); inherited; After := GetScrollPos(ScrollboxHandle, SB_VERT); if (Before <> After) then InvalidateRect(ScrollboxHandle, nil, True); end;
Delphi-Quellcode:
Der Handle hat auch einen Wert. Die Funktion habe ich vom TCustomListView geklaut. Beim Scrollen eines ListViews wird nur der ListView neugezeichnet. Bei mir wird anscheinend das komplette Fenster neugezeichnet, da es flackert. Bei Update, Repaint, Invalidate das gleiche. (wäre auch unlogisch)
ScrollBoxHandle := ScrollBox.Handle;
Ideen? Grüße Sebastian |
Re: Neuzeichnen TScrollbox, aber Fensterflackern
Hatte ich auch mal. Setz mal die entsprechenden DoubleBuffered auf True.
|
Re: Neuzeichnen TScrollbox, aber Fensterflackern
soll ich die scrollbox auf Double-Buffered setzen oder die Scrollbox?
Macht beides irgendwie keinen Sinn. Die Scrollbox flackert sowieso nicht. DoubleBuffered macht auch keinen Unterschied. (hab's ausprobiert) Beim Fenster ist DoubleBuffered unlogisch, da es auch nicht flackert wenn der ListView gescrollt wird. Es ist auch einfach falsch, dass das ganze Fenster neugezeichnet wird, obwohl dies nur bei der Scrollbox geschehen soll. Grüße Sebastian |
Re: Neuzeichnen TScrollbox, aber Fensterflackern
sorry für den push, aber das Problem ist echt nervig und
ich kann mir nicht vorstellen, dass keiner hier vor mir einen sauberen ScrollBox-Repaint hingelegt hat. Andere funktionierende Ansätze sind auch willkommen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:48 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