关于如何得到父窗口属性

jellrey 2006-04-17 08:54:16
我写了一个可视对象,这个对象要根据调用窗口的大小自动调整它里面控件的大小,请问我怎么得到调用窗口的位置属性值呢?
...全文
328 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
WorldMobile 2006-04-17
  • 打赏
  • 举报
回复
如果你把对象放在窗口里,而不是放到窗口里的tab页上的话你可以这么来做

window lw_parent

lw_parent = this.getparent()

lw_parent时就是你的父窗口,然后你再根据lw_parent.width和lw_parent.height来调整对象大小即可

如果你是放在窗口里的tab页里的话,你需要这么做

window lw_parent
powerobject lpo_parent

lpo_parent = this.GetParent()
do while IsValid (lpo_parent)
if lpo_parent.TypeOf() <> window! then
lpo_parent = lpo_parent.GetParent()
else
exit
end if
loop
lw_parent = lpo_parent
lzheng2001 2006-04-17
  • 打赏
  • 举报
回复
getparent()
msgtogcra 2006-04-17
  • 打赏
  • 举报
回复
版主的方法是完全可通用的,考虑楼主要实现的功能应该是所有全面支持自动缩放.所以建议做个基类数据窗口对象,把这个函数封装到里边,在构造事件中自动执行,取得父窗口后赋给基类对象的实例变量,访问权限设置为:Public PrivateWrite iw_parent.用的时候只要从此基类对象继承,子类直接调用 iw_parent 即可,所谓复用要从基本做起!

另外,可在此函数的基础上,再用 ParentWindow() 采用类似上面循环方法得到可能存在的 MDI 框架窗口就更好了,子类便又多一可用 iw_mdi 窗口可用;有些时候这是很方便的,比如在子类对象中 PopMenu(m_myMenu, iw_parent.PointerX(), iw_parent.PointerY()),如果 iw_parent 是一个以 OpenSheet() 方式打开的窗口,则菜单的弹出位置不对,此时须要用 iw_mdi;而如果在基类中完成了 iw_mdi 的赋值,写子类的这个实现真是再轻松不过了!

在这个过程中,你也许能发现:原来,一段优雅的代码的确是令人愉快的!

604

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 控件与界面
社区管理员
  • 控件与界面社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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