PB 窗口传参问题

liulianghan 2010-11-23 10:50:21
工具 PB9
有一个查询窗口 w_query,
它可能被多个窗口调用如:w_parent1,w_parent2, ...
w_parent1,w_parent2中有一个共同的数据窗口dw_1
我现在想实现的效果是:
用w_query控制w_parent1.dw_1,w_parent2.dw_1中的数据
如:在w_query的确定按键下写
w_XXX.dw_1.SetItem(1,"A")
我用不同的父窗口调用w_query,这个数据就会写到不同的父窗口的数据窗口中
想了好久没有好的办法,各位大侠给个主意,谢谢先!

父窗口调用控件按下事件我是这么写的:
OpenWithParm(w_query,parent)
子窗口open事件
window w_co_open(instance var)
w_co_open=Message.PowerObjectParm
子窗口cb控件
w_co_open.dw_1.setitem(1,"A")
close(parent)
保存时报错,dw_1不适用window类型(不是原话)
...全文
269 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
liulianghan 2010-11-24
  • 打赏
  • 举报
回复
尝试了一下xiaobn_cn的方法,提示Null Object Reference at dw_open=..这一行
不管怎样,我这个思路看来有问题.只好全体更新了.
感谢wag_enu和xys_777,那么晚了还在关注,实在是论坛之福!
感谢各位关注,结贴.
永生天地 2010-11-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 liulianghan 的回复:]
引用 1 楼 wag_enu 的回复:
知道openwithparm() ,怎么不了解一下closewithreturn()

在关闭w_query 时用closewithreturn() 也可以将消息写入message 对象。
然后在w_parent 的openwithparm(w_query,...) 后接收message.XXXparm

这个我知道,并且已经成功了完成了一部分.……
[/Quote]
要么你就写closewithreturn
永生天地 2010-11-24
  • 打赏
  • 举报
回复
你用window 类型,还想引用dw_1.那怎么可能引到。window类型是pb提供的window基类
liulianghan 2010-11-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wag_enu 的回复:]
知道openwithparm() ,怎么不了解一下closewithreturn()

在关闭w_query 时用closewithreturn() 也可以将消息写入message 对象。
然后在w_parent 的openwithparm(w_query,...) 后接收message.XXXparm
[/Quote]
这个我知道,并且已经成功了完成了一部分.
主要是,我以前做的有几个窗口,是采用的子窗口控制父窗口(当时只有一个父窗口)
不想再搞一遍了.想简单的把父窗口搞成一个变量(w_XXX),不知道有没有办法?
永生天地 2010-11-24
  • 打赏
  • 举报
回复
[Quote=引用楼主 liulianghan 的回复:]
父窗口调用控件按下事件我是这么写的:
OpenWithParm(w_query,parent)
子窗口open事件
window w_co_open(instance var)
w_co_open=Message.PowerObjectParm
子窗口cb控件
w_co_open.dw_1.setitem(1,"A")
close(parent)
保存时报错,dw_1不适用window类型(不是原话)[/Quote]
原因在于你的程序没有任何的设计。完全时独立的
你需要考虑设计一下你的程序架构了。而不是用window类型
统一父类窗口,调用其中的方法,就不会有这么多的问题了
xiaobn_cn 2010-11-24
  • 打赏
  • 举报
回复
可以通过一个小技巧解决问题:

在w_1和w_2都定义一个窗体函数DataWindow wf_GetDWHandle(),返回值为窗口中的dw_1。

w_query的实例变量:
window w_co_open
datawindow dw_open

然后在w_query的open事件中:
w_co_open=Message.PowerObjectParm
dw_open = w_co_open.Dynamic wf_GetDWHandle()
hyf_0023 2010-11-24
  • 打赏
  • 举报
回复
弹出窗口调用closewithreturn()且窗口类型是Response!
wag_enu 2010-11-23
  • 打赏
  • 举报
回复
知道openwithparm() ,怎么不了解一下closewithreturn()

在关闭w_query 时用closewithreturn() 也可以将消息写入message 对象。
然后在w_parent 的openwithparm(w_query,...) 后接收message.XXXparm

1,079

社区成员

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

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