![]() |
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? |
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 |
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.
|
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.
|
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 09:14 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