Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Manuelles Update aller Actions eines ActionManagers


Delete - Mi 14.06.06 09:15
Titel: Manuelles Update aller Actions eines ActionManagers
Huhu...

ich stehe mal wieder vor einem mittelprächtigen Problem: Ich habe in einer Anwendung eine recht aufwendige Funktion integriert, die mittels mehrerer Threads Dateien von a nach b kopiert... wie auch immer, wenn ich diese Funktion anschmeiße, werden meine Actions in allen TActionBars nicht neu gezeichnet. Bedeutet, wenn ich mit dem Mauszeiger darüber gehe, werden sie "Hot"... wenn ich den Mauszeiger allerdings von Ihnen herunternehme, bleiben sie "Hot". Jaaaa... ich weiss... dafür soll man den inoffiziellen Patch einspielen. Aber alles in allem ist das nur das kleinere Problem... viel größer ist das Problem, dass während meine Funktion läuft, die OnUpdate-Events der Actions nicht mehr ausgelöst werden.... es sei denn, ich klicke manuell mal kurz ins Hauptmenü... dann werden brav alle Actions disabled, die auch ausgeschaltet werden sollen.

Nun habe ich mir zwar auch einen schönen Eventhandler für mein OnDownloadStart gebastelt... und dennoch weigert sich die Anwendung, die Actions brav zu aktualisieren... ich bekomme sie weder mit Sleep noch mit Application.ProcessMessages noch sonst irgendwie dazu, dass sie aktualisiert werden.

Wie kann ich denn nun am sinnvollsten so ein Update für alle sichtbaren Actions erreichen? Gibt es nicht irgendwie etwas wie ActionManager.UpdateAllActions ?

Danke schon mal im Voraus


cartridge - Fr 30.06.06 19:17

Wenn Du eine Schleife oder so in dem Thread abarbeitest, mache mal Application.ProcessMessages. Wenn dies auch nicht reicht, musst du die Aktionen eben in einer Schleife Updaten. MeineActions[i].Update

Gruß Ingo


crowley - Mi 05.07.06 08:56

ähnliches problem ohne lösung. in einer schleife abarbeiten ist nicht wirklich möglich... *kopfkratz*... die actions können sich doch in vielerlei listen des ActionManagers verbergen... oder irre ich mich da ?

*kopfkratz*

denke, werd dem ActionManager beizeiten wohl eine neue Funktion spendieren ;)

C.