У меня есть TFrame (fraDisplay) с TTimer (timAnimateDataChange). Таймер используется для управления небольшой анимацией. В форме, содержащей фрейм, я хочу иметь метод, который делает что-то вроде этого:
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;
так как таймер не сработает во время работы метода :-()