Wenn Du willst, dass Deine UI upgedated wird, musst Du die Procedure, die den Thread gestartet hat verlassen.
Du kannst nicht einen Thread erzeugen und dann "modal" warten... Du musst immer erst die Kontrolle an den UI-Tread/ Main-MessageQueue zurück geben.
Nur wenn die Main-Messagequeue läuft, kann sich die UI aktualisieren. Also überhaupt auf Queue oder Synchronize reagieren. "Früher" hat man zur "NOT" Application.Processmessages aufgerufen. Aber wie wir alle wissen,sollte man das nur im "NOTFALL" machen, weil es in der Regel nur zu Problemen führt.
Beispiel : Ein scheinmodales Fenster ruft in einer Schleife Application.Processmessages auf, daher können andere Programmteile aufgerufen werden, die dann in dieser Schleife laufen... Probleme sind vorprogrammiert.
Mavarik
PS.: Abgesehen davon: Unter
VCL geht Dein Aufruf vielleicht - Unter FMX wird die Button Click Animation schon nicht mehr gezeigt (je nach Style). Du solltest auch den Button auf enabled := false setzen. (So wie in meinen Beispiel aus dem anderen Thread)