我有一个带有 TTimer (timAnimateDataChange) 的 TFrame (fraDisplay)。计时器用于控制一个小动画。在包含框架的表单中,我想要一个执行以下操作的方法:
procedure TForm.DoStuff;
begin
DoSomeLogicStuff;
fraDisplay.AnimateResult;
WaitForAnimationToFinish;
DoSomeOtherLogicStuff;
fraDisplay.AnimateEndResult;
WaitForAnimationToFinish;
fraDisplay.Finalize;
end;
动画基本上是 TImage32 的重绘,由计时器计时。计时器在完成时会自行禁用,并且帧有一个名为 AnimationRunning 的布尔属性,当动画完成时将设置为 false。
没有线程或类似的东西会使事情复杂化或帮助问题。
问题是,如何实现 WaitForAnimationToFinish 方法?
(顺便说一句,这不是一个好的解决方案:
procedure TForm.WaitForAnimationToFinish;
begin
repeat
Application.ProcessMessages;
until not fraDisplay.AnimationRunning;
end;
因为在方法运行时计时器不会触发:-()