Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#46

AW: Panel geschmeidig ein- und ausblenden?

  Alt 21. Sep 2017, 15:07
Allerdings reagiert deine Anwendung während der Animation dann auch nicht mehr auf Benutzereingaben.
Das ist allerdings so, in vielen Fällen aber auch erwünscht und meistens kein Problem, solange die Animationszeiten entsprechend kurz sind.

Nehmen wir nur mal den Fall, wo die Animation in einem ButtonClick-Event ausgeführt wird. Wenn dann im Application.ProcessMessages der gleiche ButtonClick nochmal ausgelöst wird, hat man plötzlich zwei Animationsschleifen gleichzeitig laufen.

Man kann das mit etwas Geschick recht einfach nachvollziehen: Ein Form mit zwei Buttons, bei dem der eine Button wie im obigen Beispiel animiert wird, wenn am auf den anderen klickt. Jetzt mal das Programm laufen lassen und einen schnellen Doppelklick auf den Button machen. Bei Application.ProcessMessages ergibt sich ein anderes Verhalten als bei Control.Update. Im ersten Fall steht der Button nach einem kurzen hin und her an der Stelle, an der er nach einem einfachen Klick stehen würde. Verwendet man Control.Update werden die Animationen nacheinander durchgeführt und der Button steht am Ende da, wo er auch nach zwei Klicks stehen sollte. Für Application.ProcessMessages müsste man nun den Event gegen sich selbst verriegeln damit das Gewusel aufhört, aber selbst dann ist das Verhalten noch anders als bei Control.Update.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat