gpt4 book ai didi

Delphi:类似 FireFox 中的 AnimateWindow

转载 作者:行者123 更新时间:2023-12-03 15:14:17 26 4
gpt4 key购买 nike

我有一个面板(底部对齐)和一些控件(客户端对齐)。

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

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:类似 FireFox 中的 AnimateWindow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8625201/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com