加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 09:06:57 所属栏目:大数据 来源:网络整理
导读:在多监视器环境中,我希望能够在关闭表单时获取当前监视器和活动监视器以保存信息,并在以后重新打开表单时,表单将显示在最后一个位置它显示了. 当显示表单时,我会进行所有检查(如果监视器编号-i-存在等等),如果一切正常,我会在右侧监视器上显示该表单(i) Form
在多监视器环境中,我希望能够在关闭表单时获取当前监视器和活动监视器以保存信息,并在以后重新打开表单时,表单将显示在最后一个位置它显示了.

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

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

我希望能够在Form1.onCloseQuery事件中显示当前监视器显示的表单和活动监视器,这样我就可以在一些Ini,DB中保存该信息,无论如何,但似乎我找不到正确的方法来执行它正常.

有任何想法吗?

解决方法

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

换句话说,您实际上不需要担心表单所在的监视器.例如,假设您有两台并排的800×600显示器.屏幕坐标为:

>(0,800,800)左手监视器.
>(800,1600,800)用于右侧监视器.

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读