欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

怎么知道控件在屏幕上的位置

更新时间: 2014-01-05 02:27:33 责任编辑: Author_N1

 

如何知道控件在屏幕上的位置
一个表单在运行时,想知道表单上的某个控件在屏幕上的位置,用什么方法?
--参考方法--
表单的TOP+控件的TOP+SYSMETRIC(9) 应该就是在屏幕上的TOP吧
LEFT 同理
--参考方法--
不至于吧,上面还只是列举了最基本的情况,更多的情况是
1. 表单可以有不同种类的边框,可调整大小/固定/单线/没有边框 
2. 标题栏也可以有不同高度,至少 vfp9 中就可以设置 HalfHeightCaption 来改变
3. 更变态的,vfp9 中窗口是可以停靠的,设置 Dockable 为 1 再看看,当你把这个窗口停靠到右边或下面时,看看这时窗口的 Left 和 Top 是多少?
如果用加加减减来计算上面的各种组合,估计把人搞疯了也算不出个正确值

所以只能分两步来算出正确结果。首先用 ObjToClient 得出控件相对窗口客户区原点的坐标,再用 ClientToScreen 算出表单客户区相对桌面原点的坐标,最后两值分别相加,得出控件相对桌面原点的坐标

--参考方法--
例:
form1.scx,将 ShowWindow 属性设为2,表单中有一个 Text2,你想让弹出的表单窗口正好在此 Text2 下方
你的弹出表单:form2.scx,将 ShowWindow 属性设为1。
运行 form1.scx 时
Public oForm
Do Form form1.scx Name oForm

form2.scx 的 Init 事件加代码:
If Type('oForm')='O'
This.Move(oForm.Text2.Left,oForm.Text2.Top+oForm.Text2.Height)
Endif

在 form1.scx 中运行 form2.scx 时,也就是弹出你的窗口时:Do Form form2.scx
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:27:33
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/10048/
本文WWW.DOC100.NET DOC100.NET版权所有。