Delphi:类似 FireFox 中的 AnimateWindow

2023-12-27

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

为了使面板动画化,我使用:

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;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Delphi:类似 FireFox 中的 AnimateWindow 的相关文章

随机推荐

  • android:安装错误:未知失败 - 运行 apk 文件时

    昨天我在使用模拟器时没有遇到任何错误 但今天我遇到了这个错误 请检查下图 我已经运行和调试了很多次 但每次都没有得到相同的错误 安装apk文件后出现错误 请给出正确的答案 以便我可以正确修复模拟器并进行处理 现在 当我编译时 出现新错误 请
  • 用于选择性剥离 HTML 的正则表达式

    我正在尝试使用 PHP 解析一些 HTML 作为练习 将其仅作为文本输出 但我遇到了障碍 我想删除隐藏的所有标签style display none 请记住 标签可能包含其他属性和样式属性 到目前为止我的代码是这样的 page preg r
  • Windows 过滤平台 - 如何根据本地端口阻止传入连接?

    我正在尝试使用 WFP 设置一些过滤器来阻止到本地服务器的入站连接 例如 侦听端口 8080 的网络服务器 我有一个可以基于远程端口进行阻止的过滤器 因此我可以阻止我的计算机上的进程建立与端口 8080 的任何连接 但我不知道如何基于本地端
  • 您的捆绑包已锁定为 mimemagic (0.3.5),但在您的 Gemfile 中列出的任何源中都找不到该版本 [重复]

    这个问题在这里已经有答案了 今天我尝试为我的 Rails 6 1 0 构建一个带有主动存储的 docker 我收到以下错误 Your bundle is locked to mimemagic 0 3 5 but that version
  • 将 git 存储库上移一级

    Git初学者问题 我有一个小型私人网络项目 使用 msysgit 在本地进行版本控制 没有外部存储库 因为它只适合我 所以我基本上可以做任何我想做的事情 我已将其设置在项目目录中 即 webroot 中 现在必须创建第二个目录 与 webr
  • 在 Powershell 中访问音乐文件元数据[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 因此 多年来 从一台电脑 硬盘复制到另一台电脑 硬盘之间 我的音乐收藏有点混乱 所以我想以编程方式浏览每一个并更新下面屏幕截图中的文件元数据
  • 如何强制 Google Docs 从 Chrome 扩展中渲染 HTML 而不是 Canvas?

    Google 文档更新为基于画布的渲染而不是 HTML 渲染后 是否可以强制 Google 文档从 chrome 扩展而不是画布渲染 HTML 不知何故 像 Grammarly 这样的 chrome 扩展可以做到这一点 但我不完全确定如何做
  • Objective-C 和 Android [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我刚刚完成了一个相对较大的 Android 项目 它在我嘴里留下了一种苦涩的味道 因为我知道它永远不会在太阳系这一边最普遍的手机之一上运行 那个
  • Blazor recaptcha 验证属性 IHttpContextAccessor 始终为 null

    我想尝试一下使用 Blazor 服务器端 到目前为止 我已经设法以某种方式克服了大多数令人头疼的问题 并且很享受它 直到现在 我正在尝试为 Google Recaptcha v3 编写一个验证器 它需要用户的 IP 地址 通常我会通过以下方
  • C# Sql 连接驱动程序

    SQL 连接对象连接到 SQL Server 以运行查询的驱动程序是什么 如果我有以下代码 SQLConnection cn new SqlConnection server ServerName initial catalog Corpo
  • MVC5 EF 实体显然正在保存,但检索时为空

    我有一个Account包含列表的类Payments 其中包含一个列表Products那是Pending Sold or Refunded 当选择Products要付款 我可以将它们添加到Payment对象 然后将整个对象保存到Account
  • 如何在不刷新页面的情况下自动提交此表单?

    这一切都在一个 php 文件中
  • Go 中的单例

    如何在Go语言中实现单例设计模式 抛开实现单例模式是否是个好主意的争论 下面是一个可能的实现 package singleton type single struct O interface var instantiated single
  • Java从int到字节错误的可能有损转换[重复]

    这个问题在这里已经有答案了 当我从 jar 文件中反编译一些类时 就会发生这种情况 这些是我唯一无法克服的错误 所有这些错误都是 可能是从 int 到 byte 的有损转换 this onDemandFetcher method563 1
  • 如何从脚本而不是终端使用 PyInstaller?

    简洁版本 如何从 Python 脚本中而不是从终端使用 PyInstaller 我需要在 Python 脚本中编写什么才能获得与在终端中编写的等效内容 gt python m PyInstaller noconsole name WorkL
  • 无法执行Findbugs 原因:该项目包含未编译的Java源文件

    我目前正在使用 sonarqube 服务器 5 6 和扫描仪 2 6 1 并且在分析 java 项目期间不断收到错误 它似乎抱怨一些未在二进制文件夹中编译的 java 文件 二进制文件夹中根本没有任何文件 添加 X 参数后 我会收到更多异常
  • 如何在 C++ 中使用 yahoo 或 gmail 发送电子邮件

    我想在我的 C 程序中发送一封电子邮件 看起来有点复杂 有没有办法使用 yahoo 或 gmail 来发送我的电子邮件 基本的互联网search http www vmime org 揭示了以下内容 C SMTP 示例 https stac
  • C++中有没有像.Net中的反射器这样的概念?

    我喜欢从 c dll 获取代码 我知道我们可以通过反射器轻松从 Net dll 获取代码 c 中有没有可用的方法 提前致谢 C 直接编译为机器代码 没有像 NET 那样的中间语言 有你可以看一下 Hex Rays 反编译器 http www
  • 如何找出 JVM 对我的代码应用了哪些优化?

    JVM 尤其是 HotSpot VM 因可在运行时应用大量优化而闻名 有没有办法查看某段代码并了解 JVM 实际上对其做了什么 一个问题是 JVM 实际对它做了什么 在调用之间发生变化 因为 JVM 可以自由地重新生成代码 举个例子 几天前
  • Delphi:类似 FireFox 中的 AnimateWindow

    我有一个面板 底部对齐 和一些控件 客户端对齐 为了使面板动画化 我使用 AnimateWindow Panel Handle 1000 aw hide or AW SLIDE OR AW VER POSITIVE panel Visibl