Bei relativ kurzen Animationen könnte man also Control.Update nehmen? Es handelt sich hier bei mit nur um rund 300ms.
Inwieweit ist das hier denn OK? Mit TTask und TThread.Synchronize.
So kann ich zwei Buttons schnell hintereinander klicken und animieren.
Delphi-Quellcode:
TTask.Run(
procedure
begin
while (D <= TUtilsEasingAnimations.AnimateDuration) do
begin
TThread.Synchronize(nil,
procedure
begin
setControlDimension(TUtilsEasingCore.EaseOutQuint(D, iStart, iEnd - iStart, TUtilsEasingAnimations.AnimateDuration), Control, aAnimationDirection, aAnimationType);
Application.ProcessMessages;
// Control.Parent.Update;
// Control.Update; // hinterlässt "Schlieren". Außer ich update auch das Control.Parent (s.o)
end);
D := GetTickCount - C;
end;
end);
Zitat:
Das Stichwort FMX ist gefallen,
Die Starter hat doch kein FMX soweit ich weiß.