一个窗口上的多个dw的Construct 事件有先后顺序吗?

winwhere 2002-10-22 01:20:18
在一个窗口上,有2个以上的dw,每个dw中的Constuct事件都有代码,当窗口打开时,Construct事件的执行顺序好象是不一样的。在程序中,要求Construct事件按一定的顺序执行;
比如,窗口上有两个dw(dw_1,dw_2),我要求,先执行完dw_1中的Construct事件,再执行dw_2中的Construct事件,因为dw_2中的Construct要用到dw_1中Construct的结果.

问题是:如何控制这些DW中的Construct事件的顺序。
...全文
55 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
winwhere 2002-10-23
  • 打赏
  • 举报
回复
PB8.0.3 9704
caic 2002-10-23
  • 打赏
  • 举报
回复
我用的是PB8,你用的是不是pb6?语法有点出入!
huihuishou 2002-10-22
  • 打赏
  • 举报
回复
呵呵,有意思,
楼主千方百计寻找问题根源,最终功夫不负有心人,找到了答案;
楼上的高手千方百计用别的方法控制顺序,也都各有各的办法。

最后是大家都解决了各自的问题,呵呵,好一个八仙过海……

然后是我,又多了点见识,呵呵,多谢多谢……
winwhere 2002-10-22
  • 打赏
  • 举报
回复
是有,
不错,PB按创建控件的先后排序顺序,倒着排。比如,如果创建控件的顺序是
dw_master -> dw_detail -> st_1
则排序为 st_1 -> dw_detail -> dw_master
在窗口源文件中:
this.Control[iCurrent+1]=this.st_1
this.Control[iCurrent+2]=this.dw_detail
this.Control[iCurrent+3]=this.dw_master
=================
TMD,原来这样,想了好长时间,原来如此.
caic 2002-10-22
  • 打赏
  • 举报
回复
用ultraedit 打开,有啊!注意去掉空格
caic 2002-10-22
  • 打赏
  • 举报
回复
用ultraedit 打开,有啊!
winwhere 2002-10-22
  • 打赏
  • 举报
回复
to: caic(猜猜)
导出 *.srw,用ultraedit 打开,找不到 this.Control[]

用editsource 打开,也找不到.
caic 2002-10-22
  • 打赏
  • 举报
回复
把dw所在窗口的语法导出来,找到this.Control[] = {。。。}在{}中你会看到his.dw_2,&this.dw_1,将dw_1与dw_2互换,然后保存,最后导入窗口所在PBL就可以了
winwhere 2002-10-22
  • 打赏
  • 举报
回复
to:louisa5155(蓝色城堡) 更正:是改变TAB顺序来修改执行顺序的
========================
如果修改tab order 的值 是无法实现 事件执行的先后顺序的。

SEND TO BACK或者BRING TO FRONT 好象只是置放控件的前后顺充,对事件执行的先后顺序也没有影响.
louisa5155 2002-10-22
  • 打赏
  • 举报
回复
可以在控件上点右键选择SEND TO BACK或者BRING TO FRONT来改变TAB顺序,具体修改搜寻中。。。
louisa5155 2002-10-22
  • 打赏
  • 举报
回复
更正:是改变TAB顺序来修改执行顺序的
louisa5155 2002-10-22
  • 打赏
  • 举报
回复
在CONTROL LIST 里面更改DW的摆放顺序就可以实现了
先点选DW然后ANCESTOR就可以实现更改了

呵呵
很好玩,兄弟,以后多发现一些这样的偏问题供大家讨论,谢谢
cyliu2000 2002-10-22
  • 打赏
  • 举报
回复
up
winwhere 2002-10-22
  • 打赏
  • 举报
回复
也不知道到底是什么原因,哪位知道的话,肯不肯出来讲一下。
winwhere 2002-10-22
  • 打赏
  • 举报
回复
to: pufan()

不错,好象是这样,即按后建先触发的顺序,我后来重新按倒序(3,2,1)的顺序建了数据窗口,就能按 1,2,3的顺序执行了。
pufan 2002-10-22
  • 打赏
  • 举报
回复
他的dw应该是按3,2,1的顺序建立的吧,constructor应该是后建先触发的顺序.
winwhere 2002-10-22
  • 打赏
  • 举报
回复
不错,上面各位的方法我想应该可以,但我参考了一下PFC中的例程:
它既没有定义实例变量,也没有用自定义事件或函数,而是直接在DW的Construct事件中写的代码,但它每次都能控制Construct事件按顺序执行。
dw_1 -> dw_2 -> dw_3
====================================
大家可参考PFC example中的w_linkagescroll,w_linkageRetrieve,w_linkageFilter等等窗口;
这几个窗口都有一个共同的特征,就是(假设)dw_2 的Construct事件要用到 dw_1的Construct事件的结果。

是否还有其它技巧?

结贴时再加分!!

balloonman2002 2002-10-22
  • 打赏
  • 举报
回复
这样你想把这些代码怎么顺序摆放都应该没有问题;
balloonman2002 2002-10-22
  • 打赏
  • 举报
回复
建议:把dw_1,dw_2的Construct事件的代码都放到一个函数里面,如wf_xxx()
然后在FORM的OPEN事件中调用此wf_xxx(),这样灵活性更强些;
hd506lg 2002-10-22
  • 打赏
  • 举报
回复

自定义dw的初始化事件吧,在窗口的open事件中顺序调用,这样便于控制,例如
dw_1.event ue_initialize()
dw_2.event ue_initialize()
程序都清晰、模块些。
加载更多回复(2)

610

社区成员

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

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