其他分享
首页 > 其他分享> > 为TAnimation增加回调支持

为TAnimation增加回调支持

作者:互联网

TAnimation有一个动画结束事件,当动画完成后触发这个事件,但是没有提供回调支持,就是在Start一个动画时,就指定完成后调用的方法。查看QC,有人早就提到了这个需求:

https://quality.embarcadero.com/browse/RSP-20802,遗憾的是,Delphi 11.1也没能实现,不得矣,自己加了一下:

//为TAnimation重载一个Start方法:

//++++++++++ by 红鱼儿
procedure Start(AFinishCallback:TFinishCallback);overload;
//++++++++++ by 红鱼儿

代码实现:

//++++++++++ by 红鱼儿
procedure TAnimation.Start(AFinishCallback: TFinishCallback);
begin
  FFinishCallback:=AFinishCallback;
  Start;
end;
//++++++++++ by 红鱼儿

再修改DoFinish方法:

procedure TAnimation.DoFinish;
begin
 //++++++++++ by 红鱼儿
  if Assigned(FFinishCallback) then
     FFinishCallback(Self)
  else
 //++++++++++ by 红鱼儿
  if Assigned(FOnFinish) then
    FOnFinish(Self);
end;

OK,现在调用一下:

procedure TCameraForm.PlayFormAnimationOut;
var
  fa: TFloatAnimation;
begin
  fa := Self.FindComponent('FloatAnimation2_') as TFloatAnimation;
  if fa <> nil then
  begin
    fa.Start(procedure(Sender:TObject)//使用回调函数来处理动画完成后的动作
             begin
                 Close;
             end);
  end
end;

万事大吉!

需要代码的同学可以联系我,免得自己再改了。

 

标签:begin,end,支持,Start,TAnimation,++++++++++,回调,procedure
来源: https://www.cnblogs.com/kinglandsoft/p/16199300.html