AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Zeichnen dynamisch erzeugter TWinControls beschleunigen
Thema durchsuchen
Ansicht
Themen-Optionen

Zeichnen dynamisch erzeugter TWinControls beschleunigen

Ein Thema von Kostas · begonnen am 5. Mai 2024 · letzter Beitrag vom 5. Mai 2024
Antwort Antwort
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.095 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Zeichnen dynamisch erzeugter TWinControls beschleunigen

  Alt 5. Mai 2024, 12:28
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?
  Mit Zitat antworten Zitat
Ancaron

Registriert seit: 24. Nov 2007
9 Beiträge
 
#2

AW: Zeichnen dynamisch erzeugter TWinControls beschleunigen

  Alt 5. Mai 2024, 13:00
Du könntest es mal mit LockwindowUpadte versuchen:

Code:
LockWindowUpdate(cxSrollBox.Handle)

//Dein Erzeugen und Füllen der Listboxen

LockWindowUpdate(0)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.585 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Zeichnen dynamisch erzeugter TWinControls beschleunigen

  Alt 5. Mai 2024, 13:06
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:
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)
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!

Geändert von jaenicke ( 5. Mai 2024 um 13:09 Uhr)
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.095 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Zeichnen dynamisch erzeugter TWinControls beschleunigen

  Alt 5. Mai 2024, 16:27
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:19 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