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

如何在前台窗体中全屏最大化后台的另一个窗体?

实现从一个窗体全屏最大化另一个窗体的方法

核心问题修正

你之前操作错误的原因是调用ShowWindowAsync时传入了当前窗体的Handle,只要替换为目标后台窗体的句柄,就能正确对目标窗体执行全屏操作。

方法一:纯Delphi属性实现

在前台窗体的OnActivate事件中添加代码(假设后台窗体名为Form2):

procedure TForm1.FormActivate(Sender: TObject);
begin
  // 设置目标窗体无边框
  Form2.BorderStyle := bsNone;
  // 让目标窗体覆盖整个屏幕
  Form2.SetBounds(Screen.DesktopLeft, Screen.DesktopTop, Screen.DesktopWidth, Screen.DesktopHeight);
  // 可选:将目标窗体置于最上层(根据需求调整)
  Form2.BringToFront;
end;

方法二:结合Windows API实现

如果偏好使用ShowWindowAsync,关键是传入目标窗体的句柄:

procedure TForm1.FormActivate(Sender: TObject);
begin
  Form2.BorderStyle := bsNone;
  // 传入Form2的Handle,而非当前窗体的Handle
  ShowWindowAsync(Form2.Handle, SW_MAXIMIZE);
  // 可选:强制刷新目标窗体确保状态生效
  UpdateWindow(Form2.Handle);
end;

注意事项

  • 确保后台窗体Form2已提前创建(比如主窗体启动时执行Form2 := TForm2.Create(nil); Form2.Show;)
  • 若需退出全屏,可在合适事件(如前台窗体失去焦点)中恢复Form2.BorderStyle为bsSizeable或其他样式,并调整窗口尺寸

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 22:16:30