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

pb调用其他窗口事件有关问题

2012-02-25 
pb调用其他窗口事件问题open(W_1)---点击W_1.cb_1 ----OPEN(W_2) ---- 点击W_2.cb_1 --- 此时想执行W_

pb调用其他窗口事件问题
open(W_1)---> 点击W_1.cb_1 ----> OPEN(W_2) ----> 点击W_2.cb_1 ---> 此时想执行W_1.dw_1.retrieve()

请问怎么实现?

其实就是调用其他窗口事件的问题,为什么W_1明明是打开状态,处于W_2下方,但是Isvalid 是FALSE呢,只能调用当前活动窗口的事件吗?



 

[解决办法]
可以在w_2里面通过w_1.dw_1.retrieve()操作.
[解决办法]
估计你的w_1是用Open ( windowvar, windowtype {, parent } )来打开的,如果是这样,可以:

C/C++ code
//全局声明windwo gw_to_open//w_1新建个事件ue_retrievedw_1.retreive()//打开w_1string ls_winls_win = 'w_1'open(gw_to_open, ls_win)//W_2.cb_1调用w_1的dw_1if isvalid(gw_to_open) then gw_to_open.dynamic event ue_retieve()
[解决办法]
如果真像你说的

isvalid(w_1)为false的话,你肯定不会是用open(W_1)来打开的,应该用到了变量

window lw_win

open(lw_win, "w_1")之类的

你需要先把原来的lw_win记录下来,如用全局变量或者实例变量,然后再引用即可
[解决办法]
可以在w_2.cb_1 w_1.dw_1.retrieve()操作.
if isvalid(w_1) then w_1.dw_1.retrieve()
[解决办法]
这样考虑
在点击W_1.cb_1
打开w_2的时候传参数过去
在w_1.cb_1的clicked事件写:
datawindow ldw
ldw = w_1.dw_1
openwithparm(w_2,ldw ) 

在w_2定义一实例变量datawindow idw
在w_2的open事件写:
idw = message.powerobjectparm 
然后就可以在w_2的cb_1的clicked事件写:
idw.retrieve()




[解决办法]
retrieveend里作同步
[解决办法]
能不能调用w_1.dw_1.retrieve()取决于w_1是否是已创建的实例,与谁来调用无关

所以您要看看w_1是怎么打开的



探讨
谢谢楼上各位兄弟指教,查了下资料
我的W_2打开方式是:
w_sheet ls_tmp
string ls_windowname
ls_windowname = 'w_2'//取到的是W_2的名字。。字符串型
OpenSheet( lw_tmp, ls_windowname , w_main_frame, 5, Layered! )
这种方式打开的W_2 不能直接用w_1.dw_1.retrieve(),但用下面这句打开W_2可以直接调用

OpenSheet(  w_2 , w_main_frame, 5, Layered! )//此处W_2应该是W_SHEET的实例了

上面那种方式为什么不行呢?

[解决办法]
OpenSheet( lw_tmp, ls_windowname , w_main_frame, 5, Layered! )
//1.我们已知window名称但不知道*.PBL中是否有这个window(w_1), 即使没有这个window时候这句可以编译通过. 
OpenSheet( w_1 , w_main_frame, 5, Layered! )
//2.用的是已确认的window实体,若*.pbl中没有此window则编译不通过.
[解决办法]
探讨
哈哈 beyon2008哥哥你这方法绝对简单粗暴 我怎么没想到呢 可是我有两个数据窗口要retrieve 就是修改前列表框和修改后列表框,W_2修改一条数据标志位后 把它挪到修改后列表框中,所以两个窗口都要retrieve一下,让用户点刷新不好意思不是。。怎么办呢?

[解决办法]
探讨
集合大家的指点,定义了全局变量保存w_1,然后在w_2引用这个变量时,不识别w_1的控件。
Global Variables :
window lm

w_1中cb_1的click事件:
lm = parent
opensheetwithparm(w_ds_shenhe,lm,w_main_frame,5,layered!)

w_ds_shenhe的cb_1的click事件:
window iw //
iw = message.powerobjectparm
iw.dw_1.retrieve()

报错:Incompatible property dw_1 for type window

dw_1肯定是有的

热点排行