怎样使弹出窗口紧贴某一编辑框下方?

wu_yang 2002-04-18 04:35:18
原以为很简单,却不料被pb的位置定义方式搞糊涂了。
我现在的做法:

弹出窗口.y=父窗口.y+编辑框.y+编辑框.height

但结果却是弹出窗口的位置总在编辑框中而不在编辑框下方。
查帮助才知道弹出窗口.y是窗口workspace的y,并不包括标题栏。

问题:
怎样使弹出窗口包括标题栏紧贴编辑框下方?
...全文
75 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
chinalht 2002-04-19
  • 打赏
  • 举报
回复
FUNCTION ulong ClientToScreen(ulong hwnd,ref long lp[2]) LIBRARY "user32.dll"
FUNCTION ulong ScreenToClient(ulong hwnd,ref long lp[2]) LIBRARY "user32.dll"
用这两个函数,应该能搞定了.
long lp[2]
lp[1] = unitstopixels( sle_1.x , xunitstopixels! )
lp[2] = unitstopixels( sle_1.y + sle_1.height, yunitstopixels! )
//得到相对整个屏幕位置
ClientToScreen( handle( sle_1 ), lp )
lp[1] = pixelstounits( lp[1], xpixelstounits! )
lp[2] = pixelstounits( lp[2], ypixelstounits! )
弹出窗口.move( lp[1], lp[2] )
jimly 2002-04-19
  • 打赏
  • 举报
回复
1、把窗口的标题高度加上,一般好象是 18个左右的pixels记不清了
弹出窗口.y=父窗口.y+编辑框.y+编辑框.height
弹出窗口.y += pixelstounits(18,.........
但窗口标题的高度是可变的,这样只能适用于一般情况。
2、用api得到编辑框的屏幕pixels位置,再转化为pbu

3、还要考虑下部位置而要显示在编辑框上部的情况。
smartdraw 2002-04-19
  • 打赏
  • 举报
回复
■■STUDY■■
wu_yang 2002-04-19
  • 打赏
  • 举报
回复
chinalht(我在,故我思)可行,不过要改一下

long lp[2],lheight
ClientToScreen( handle( sle_1), lp )//得到相对整个屏幕位置
lp[1]= pixelstounits( lp[1], xpixelstounits! )
lheight = unitstopixels(sle_1.height, yunitstopixels! )
lp[2]= pixelstounits( lp[2]+lheight, ypixelstounits! )
//要加上编辑框的高度
弹出窗口.move( lp[1], lp[2] )

chinalht(我在,故我思)真是sdk高手啊,看来学会sdk,在windows编程里什么
语言都通吃,不过这就失去了rad开发工具的本意了
wu_yang 2002-04-18
  • 打赏
  • 举报
回复
up
wu_yang 2002-04-18
  • 打赏
  • 举报
回复
同志,实践证明那个方法是不行的。
请看清楚问题才回答。
SomeFish 2002-04-18
  • 打赏
  • 举报
回复
打开窗口中写:弹出窗口.y=父窗口.y+编辑框.y+编辑框.height
wu_yang 2002-04-18
  • 打赏
  • 举报
回复
同志,我的问题就是这个y怎样测?用绝对象素肯定不行,分辨率一变就
全乱套了。
coolnan 2002-04-18
  • 打赏
  • 举报
回复
将弹出窗口的位置定义到编辑框下边,在弹出窗口的open事件用this.move(x,y)即可。xy的数值自己测一下!
K999 2002-04-18
  • 打赏
  • 举报
回复
我来 UP-

1,108

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧