首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > VFP >

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

2013-09-06 
如何知道控件在屏幕上的位置一个表单在运行时,想知道表单上的某个控件在屏幕上的位置,用什么方法?[解决办

如何知道控件在屏幕上的位置
一个表单在运行时,想知道表单上的某个控件在屏幕上的位置,用什么方法?
[解决办法]
表单的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

热点排行