You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Delphi 12.1 FMX自定义按钮无法正常最小化窗体问题

Delphi 12.1 FMX窗体自定义按钮最小化不全的解决办法

当FMX窗体设置了以下属性时,调用内置的WindowState := TWindowState.wsMinimized无法让窗体完全最小化:

  • BorderStyle设为None
  • BorderIcon全部取消勾选
  • Transparency设为True
    窗体仅包含带自定义样式按钮的面板,点击自定义按钮触发最小化事件但失效。

以下是几种可行的解决方法:

方法一:调用Windows系统API(Windows平台专属)

FMX在无边框+透明的场景下,内置的最小化逻辑可能无法正确触发系统级行为,直接调用Windows API可以绕过这个问题。

首先在单元中引入Winapi.Windows,然后修改按钮点击事件代码:

procedure TForm_Main.Button_MinClick(Sender: TObject);
begin
  ShowWindow(Handle, SW_MINIMIZE);
end;

该方法直接调用系统窗口管理函数,确保窗体完全最小化到任务栏。

方法二:临时调整透明属性(跨平台兼容思路)

如果需要跨平台支持,可以先关闭窗体透明再执行最小化操作,后续在窗体恢复时重新开启透明:

  1. 修改按钮点击事件:
procedure TForm_Main.Button_MinClick(Sender: TObject);
begin
  Transparency := False;
  WindowState := TWindowState.wsMinimized;
end;
  1. 在窗体的OnRestore事件中恢复透明:
procedure TForm_Main.FormRestore(Sender: TObject);
begin
  Transparency := True;
end;

方法三:检查控件层级

确认窗体上所有控件都正确挂载到主面板或窗体本身,没有存在脱离主窗体的顶层悬浮控件——这类控件可能导致最小化时残留显示,破坏完全最小化的效果。

内容的提问来源于stack exchange,提问作者Zakaria Mimeche

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 22:39:49