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/)
-   -   Visible Eigenschaft von Buttons im Thread ändern (https://www.delphipraxis.net/136972-visible-eigenschaft-von-buttons-im-thread-aendern.html)

SimStar001 11. Jul 2009 13:54


Visible Eigenschaft von Buttons im Thread ändern
 
hallo,

ich habe eine Klasse erstellt, die Buttons beinhaltet, und die Sichtbarkeit regelt (visible true/false).

Die Procedure zum Sichtbarkeit regeln führe ich in einem Thread aus. Leider hängt sich das Tool danach auf, bleibt eingefroren, obwohl alles ausgefürt wurde.

führe ich die gleichen Proceduren nicht in einem Thread aus so klappt das ganze ohne probleme.
gleiches mache ich auch mit Images, dort klappt es allerdings im Thread.

Wieso ist das so? was kann ich tun?

Pfoto 11. Jul 2009 16:18

Re: Visible Eigenschaft von Buttons im Thread ändern
 
Hallo Marco,

sobald du über einen Thread Zugriff auf die VCL durchführst,
muss dies synchronisiert geschehen (selbst wenn es ab und
zu auch ohne Synchronisation ohne Fehler funktioniert).

Das Thema wurde schön öfter besprochen, suche einfach mal
im Forum danach.

Gruß
Jürgen

Bernhard Geyer 11. Jul 2009 16:20

Re: Visible Eigenschaft von Buttons im Thread ändern
 
Lies doch einfach mal durch was Delphi dir in den Header deiner Thread-Unit schreibt wenn du eine neue Thread-Klasse über den Menüpunkt Datei/Neu anlegst. Die VCL ist nicht Thread-Save da die Win32-API für Windows-Ressourcen eine Thread-Affinität hat. Du darfst diese nur in dem Thread ansprechen in dem sie erzeugt wurden. Und wenn du auf ein Formular (das im Hauptthread erzeugt wird) Controls in einem anderen Thread erzeugt kann alles möglich passieren - ab und zu auch mal das es klappt.

jaenicke 11. Jul 2009 16:46

Re: Visible Eigenschaft von Buttons im Thread ändern
 
Falls du auf diese Weise die Buttons sichtbar oder unsichtbar machen willst, während der Hauptthread gerade etwas macht, dann musst du dort Application.ProcessMessages einbauen. Denn sonst wartet der Thread während der Synchronisierung bis dein Hauptthread fertig mit der aktuellen Aktion ist.

SimStar001 11. Jul 2009 16:48

Re: Visible Eigenschaft von Buttons im Thread ändern
 
Ok alles klar, habe den Threat auf Syncronized gestellt und usedComObjects auf true gesetzt und jetzt gehts...

naja was soll... wusste nicht genau wonach ich suchen sollte.. deswegen der thread.

LG Marco

Viellen Dank!


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