Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Zeichnen dynamisch erzeugter TWinControls beschleunigen (https://www.delphipraxis.net/215084-zeichnen-dynamisch-erzeugter-twincontrols-beschleunigen.html)

Kostas 5. Mai 2024 11:28

Zeichnen dynamisch erzeugter TWinControls beschleunigen
 
Hallo Zusammen,

ich arbeite in einem Projekt mit den DevExpress Komponenten.
Auf der Form befindet sich eine TcxSrollBox. In dieser ScrollBox werden zur Laufzeit dynamisch 1 bis 12 tcxMCListBox Objekte mit 25 ListBoxItems erzeugt.
Sobald ein tcxMCListBox in der TcxSrollBox erzeugt wird, wird es sofort gezeichnet. Somit flackert die Form bis alles gezeichnet ist. Durch das permanente Zeichen geht natürlich die performance in die Knie. Bei anderen Controls gibt es soetwas wie BeginnUpdate und EndUpdate. Beiden denen zwei DevExpress Komponenten leider nicht.

Ich habe die TcxSrollBox auf Visible = false gesetzt und nach dem erzeugen auf Visible = true damit ist es deutlich besser aber nicht ausreichend.

Hat jemand eine Idee?

Ancaron 5. Mai 2024 12:00

AW: Zeichnen dynamisch erzeugter TWinControls beschleunigen
 
Du könntest es mal mit LockwindowUpadte versuchen:

Code:
LockWindowUpdate(cxSrollBox.Handle)

//Dein Erzeugen und Füllen der Listboxen

LockWindowUpdate(0)

jaenicke 5. Mai 2024 12:06

AW: Zeichnen dynamisch erzeugter TWinControls beschleunigen
 
Außerdem solltest du im Quelltext einmal schauen, wo das Neuzeichnen ausgelöst wird.

Kannnst du vielleicht mit WM_SETREDRAW, das du an die Scrollbox schickst, das Flackern verhindern? Damit kannst du das Neuzeichnen aktivieren oder deaktivieren, je nach Parameter.

// EDIT:
Zitat:

Zitat von Ancaron (Beitrag 1536414)
Du könntest es mal mit LockwindowUpadte versuchen:

Das ist keine gute Idee. Das ist nicht dafür gedacht, allgemein verwendet zu werden, dafür gibt es WM_SETREDRAW. (siehe Doku)

Kostas 5. Mai 2024 15:27

AW: Zeichnen dynamisch erzeugter TWinControls beschleunigen
 
Hallo Zusammen,

ich habe zufällig diesen Beitrag gefunden für LockDrawing und UnlockDrawing. Damit verbessert sich das Zeichnen gewaltig. Jetzt ist alles absolut ruhig und Pfeilschnell. Es basiert auf WM_SETREDRAW.

https://blog.marcocantu.com/blog/202...incontrol.html


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:04 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