Delphi:AnimateWindow就像在FireFox中一样

Delphi:AnimateWindow就像在FireFox中一样,第1张

概述我有一个面板(底部对齐)和一些控件(客户端对齐). 要为我使用的面板设置动画: AnimateWindow(Panel.Handle, 1000, aw_hide or AW_SLIDE OR AW_VER_POSITIVE);panel.Visible:=false; 在我的情况下,面板平滑地隐藏,然后只有其他控件占用它的空间. 但我希望其他控件能够顺畅地与面板同时移动. 例如,FireFox 我有一个面板(底部对齐)和一些控件(客户端对齐).

要为我使用的面板设置动画:

AnimateWindow(Panel.Handle,1000,aw_hIDe or AW_SLIDE OR AW_VER_POSITIVE);panel.Visible:=false;

在我的情况下,面板平滑地隐藏,然后只有其他控件占用它的空间.

但我希望其他控件能够顺畅地与面板同时移动.

例如,firefox使用此效果.

谁能建议我有用的东西?谢谢!

解决方法 AnimateWindow是一个同步函数,它在动画结束前不会返回.这意味着在DWTime参数中指定的时间内,没有对齐代码将运行,并且’alClIEnt’对齐的控件将保持静止,直到动画结束.

我建议改用计时器.举个例子:

type  TForm1 = class(TForm)    ..  private    FPanelHeight: Integer;    FPanelVisible: Boolean;..procedure TForm1.FormCreate(Sender: TObject);begin  FPanelHeight := Panel1.Height;  Timer1.Enabled := False;  Timer1.Interval := 10;end;procedure TForm1.button1Click(Sender: TObject);begin  Timer1.Enabled := True;  FPanelVisible := not FPanelVisible;end;procedure TForm1.Timer1Timer(Sender: TObject);const  Diff: array [Boolean] of Integer = (-1,1);begin  Panel1.Height := Panel1.Height - Diff[FPanelVisible];  Panel1.Visible := Panel1.Height > 0;  Timer1.Enabled := (Panel1.Height > 0) and (Panel1.Height < FPanelHeight);end;
总结

以上是内存溢出为你收集整理的Delphi:AnimateWindow就像在FireFox中一样全部内容,希望文章能够帮你解决Delphi:AnimateWindow就像在FireFox中一样所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1271987.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-08
下一篇2022-06-08

发表评论

登录后才能评论

评论列表(0条)

    保存