gpt4 book ai didi

Delphi XE4 - 获取表单的当前监视器

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

在多监视器环境中,我希望能够在关闭表单时获取当前监视器和事件监视器,以便保存信息,并且当稍后重新打开表单时,表单将显示在最后显示的位置。

当显示表单时,我会进行所有检查(如果监视器编号 -i- 存在等),如果一切正常,我会在右侧监视器 (i) 上显示表单

Form1.BoundsRect := Screen.Monitors[i].BoundsRect;

我希望能够获取显示表单的当前监视器以及 Form1.onCloseQuery 事件中的事件监视器,以便我可以将该信息保存在某些 Ini、DB 等中,但似乎我找不到正确的方法正确地做这件事。

有什么想法吗?

最佳答案

如果您希望保存表单的位置,可以在屏幕坐标中执行此操作。将信息保存在 TForm.BoundsRect 中,它为您提供屏幕相对坐标。请注意,屏幕相对坐标包含连接到屏幕的所有监视器。

换句话说,您实际上不需要担心表单位于哪个监视器上。例如,假设您有两台并排的 800x600 显示器。屏幕坐标为:

  • (0, 0, 800, 800) 用于左侧显示器。
  • (800, 0, 1600, 800)用于右手显示器。

明智的做法是在第一次显示表单时检查表单是否在屏幕范围内。也许当您记得它的位置时,它位于随后被移除的监视器上。或者用户可能重新配置了他们的显示器,使您之前的屏幕坐标无效。

要回答您提出的问题,请使用表单的 Monitor 查找与表单关联的监视器。属性(property)。这是通过调用 Win32 API 函数 MonitorFromWindow 来实现的。传递MONITOR_DEFAULTTONEAREST

关于Delphi XE4 - 获取表单的当前监视器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22402688/

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