【问题标题】:Delphi Form Restored State Position and SizeDelphi Form 恢复状态位置和大小
【发布时间】:2015-04-27 13:58:54
【问题描述】:

在最大化的delphi表单中,如何获取表单恢复状态的位置和大小?我知道在.NET 中我们使用RestoreBoundsDesktopBound

【问题讨论】:

  • 您可以使用 JediVCL 库,其中有 TJvFormPlacementTJvFormStorage 组件可以自动保存/恢复注册表、ini 或 DB 的表单边界

标签: delphi winapi


【解决方案1】:

这不是由 VCL 框架公开的。相反,您需要深入了解 Win32 API。你需要的函数是GetWindowPlacement

var
  WindowPlacement: TWindowPlacement;
....
WindowPlacement.length := SizeOf(WindowPlacement);
Win32Check(GetWindowPlacement(Form.Handle, WindowPlacement));

您需要的信息可以在WindowPlacement 结构中找到。请注意,坐标是相对于工作区域而不是屏幕报告的。

通常您需要此信息,以便日后恢复。使用SetWindowPlacement 来做到这一点。

【讨论】:

  • 一个简单的getset 工作,如果你总是有相同数量的监视器。如果您get 在稍后拔下的监视器上,然后set 回到保存的值,您的应用程序将出现在屏幕外。 JVCL 测试以确保 WindowPlacement.rcNormalPosition 在执行 SetWindowPlacement 之前出现在屏幕上(请参阅 JvJVCLUtils.pas InternalRestoreFormPlacement)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-10
  • 2016-09-03
  • 2019-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多