Einzelnen Beitrag anzeigen

Furtbichler
(Gast)

n/a Beiträge
 
#3

AW: VCL Elemente in geblocktem Ereignishandler disablen

  Alt 21. Aug 2012, 07:58
Man kann mit der VCL nicht so umgehen, als ob jeder Aufruf einer Methode einen unmittelbaren Effekt hätte. Insbesondere die Methoden/Eigenschaften zur Veränderung des Aussehens (Enable, Visible, Caption etc.) sollten eher nach dem Motto: "Bitte ausführen, wenn die Anwendung mal wieder Zeit hat" gehandhabt werden.

So ein Formular wartet ja eigentlich immer, das der Anwender irgendwo raufklickt oder sonstwas anstellt. Und nur in der Zeit werden die o.g. Anforderungen an Layoutänderungen abgearbeitet.

Man kann z.T. mit 'Update', 'Repaint' usw. das Neuzeichnen forcen, aber so richtig schick ist das nicht, da das Formular dann zwar u.U. statisch neu gezeichnet wird, aber nur einmalig.

Du willst bei einem Buttonklick eine Aktion starten und solange diese Aktion läuft, soll der Button nicht klickbar sein? Aber das Fenster soll man ja noch verschieben dürfen, oder?

Verwende einen Thread. Im OnClick des Start-Buttons startest Du dem Thread und disablest den Button. Dem Thread sagst Du, das er bei Beendigung (OnTerminate) den Button wieder enablen soll.

Dann musst Du nur im OnClose-Ereignis des Formulars eine ggfs. aktive Instanz des Threads terminieren.
  Mit Zitat antworten Zitat