Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   RzShellTree Aktualisierung (https://www.delphipraxis.net/209879-rzshelltree-aktualisierung.html)

TurboMagic 3. Feb 2022 12:30

RzShellTree Aktualisierung
 
Hallo,

ich nutze in 10.4.2 ein TCardPanel und habe auf einer Karte eine
RzShellTree Komponente (Konopka Signature Controls), eine Dateiliste,
ein Edit und einen TButton mit nur einem Icon drauf.

Das RzShellTree was bisher so eingestellt, dass Options stoAutoFill an hatte,
damit der Inhalt automatisch gefüllt wird. Das war aber mit dem Button
problematisch. Da sah' man dann nicht gleich das Icon, sondern einen Text auf
dem, Button bis nach Füllen des RzShellTree der Button aktualisiert wurde.
Der Button hatte keine Caption.

Ich habe das jetzt so umgebaut, dass wenn man auf diese Karte blättert
(ein anderer Button) das stoAutoFill beim RzShellTree rausgenommen wird und
ein 15ms Timer gestartet wird. Nach Ablauf des Timers wird stoAutoFill wieder
hinzugefügt und RzShellTree.FillItems aufgerufen.

Der Button mit dem Icon wird jetzt sofort gezeichnet und der Inhalt des Baumes
angezeigt. Es gibt halt nur eine leichte Zeitverzögerung bis der Baum aufgebaut
ist.

Kann man da vielleicht noch was optimieren?

Grüße
TurboMagic

Uwe Raabe 3. Feb 2022 12:43

AW: RzShellTree Aktualisierung
 
Statt des Timers kannst du den OnTimer-Code auch einem TThread.ForceQueue übergeben. Das legt es direkt in die Message-Queue und sorgt für eine minimale Verzögerung bei gleichzeitiger Entkopplung von dem aktuellen Eventhandler.

TurboMagic 3. Feb 2022 14:31

AW: RzShellTree Aktualisierung
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1501643)
Statt des Timers kannst du den OnTimer-Code auch einem TThread.ForceQueue übergeben. Das legt es direkt in die Message-Queue und sorgt für eine minimale Verzögerung bei gleichzeitiger Entkopplung von dem aktuellen Eventhandler.

Danke! Dann kann ich aber gleich ein PostMessage absetzen und einen Message Handler einbauen.

Uwe Raabe 3. Feb 2022 16:26

AW: RzShellTree Aktualisierung
 
Zitat:

Zitat von TurboMagic (Beitrag 1501652)
Dann kann ich aber gleich ein PostMessage absetzen und einen Message Handler einbauen.

Na klar. Bei ForceQueue spart man sich halt die separate Deklaration des Handlers und einer Message-Konstanten und hat auch noch Aufruf und ausführenden Code an einer Stelle. Nebenbei kann man auch noch lokale Variablen mitgeben (auch wenn du die in deinem Fall jetzt vielleicht nicht brauchst).


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