比如,窗口上有两个dw(dw_1,dw_2),我要求,先执行完dw_1中的Construct事件,再执行dw_2中的Construct事件,因为dw_2中的Construct要用到dw_1中Construct的结果.
问题是:如何控制这些DW中的Construct事件的顺序。
22 个解决方案
#1
实例变量。
#2
好像不能更改,所以最好不要用Construct事件.
自定义dw的初始化事件吧,在窗口的open事件中顺序调用,这样便于控制,例如
dw_1.event ue_initialize()
dw_2.event ue_initialize()
自定义dw的初始化事件吧,在窗口的open事件中顺序调用,这样便于控制,例如
dw_1.event ue_initialize()
dw_2.event ue_initialize()
#3
对
自定义dw的初始化事件吧,在窗口的open事件中顺序调用,这样便于控制,例如
dw_1.event ue_initialize()
dw_2.event ue_initialize()
程序都清晰、模块些。
自定义dw的初始化事件吧,在窗口的open事件中顺序调用,这样便于控制,例如
dw_1.event ue_initialize()
dw_2.event ue_initialize()
程序都清晰、模块些。
#4
建议:把dw_1,dw_2的Construct事件的代码都放到一个函数里面,如wf_xxx()
然后在FORM的OPEN事件中调用此wf_xxx(),这样灵活性更强些;
然后在FORM的OPEN事件中调用此wf_xxx(),这样灵活性更强些;
#5
这样你想把这些代码怎么顺序摆放都应该没有问题;
#6
不错,上面各位的方法我想应该可以,但我参考了一下PFC中的例程:
它既没有定义实例变量,也没有用自定义事件或函数,而是直接在DW的Construct事件中写的代码,但它每次都能控制Construct事件按顺序执行。
dw_1 -> dw_2 -> dw_3
====================================
大家可参考PFC example中的w_linkagescroll,w_linkageRetrieve,w_linkageFilter等等窗口;
这几个窗口都有一个共同的特征,就是(假设)dw_2 的Construct事件要用到 dw_1的Construct事件的结果。
是否还有其它技巧?
结贴时再加分!!
它既没有定义实例变量,也没有用自定义事件或函数,而是直接在DW的Construct事件中写的代码,但它每次都能控制Construct事件按顺序执行。
dw_1 -> dw_2 -> dw_3
====================================
大家可参考PFC example中的w_linkagescroll,w_linkageRetrieve,w_linkageFilter等等窗口;
这几个窗口都有一个共同的特征,就是(假设)dw_2 的Construct事件要用到 dw_1的Construct事件的结果。
是否还有其它技巧?
结贴时再加分!!
#7
他的dw应该是按3,2,1的顺序建立的吧,constructor应该是后建先触发的顺序.
#8
to: pufan()
不错,好象是这样,即按后建先触发的顺序,我后来重新按倒序(3,2,1)的顺序建了数据窗口,就能按 1,2,3的顺序执行了。
不错,好象是这样,即按后建先触发的顺序,我后来重新按倒序(3,2,1)的顺序建了数据窗口,就能按 1,2,3的顺序执行了。
#9
也不知道到底是什么原因,哪位知道的话,肯不肯出来讲一下。
#10
up
#11
在CONTROL LIST 里面更改DW的摆放顺序就可以实现了
先点选DW然后ANCESTOR就可以实现更改了
呵呵
很好玩,兄弟,以后多发现一些这样的偏问题供大家讨论,谢谢
先点选DW然后ANCESTOR就可以实现更改了
呵呵
很好玩,兄弟,以后多发现一些这样的偏问题供大家讨论,谢谢
#12
更正:是改变TAB顺序来修改执行顺序的
#13
可以在控件上点右键选择SEND TO BACK或者BRING TO FRONT来改变TAB顺序,具体修改搜寻中。。。
#14
to:louisa5155(蓝色城堡) 更正:是改变TAB顺序来修改执行顺序的
========================
如果修改tab order 的值 是无法实现 事件执行的先后顺序的。
SEND TO BACK或者BRING TO FRONT 好象只是置放控件的前后顺充,对事件执行的先后顺序也没有影响.
========================
如果修改tab order 的值 是无法实现 事件执行的先后顺序的。
SEND TO BACK或者BRING TO FRONT 好象只是置放控件的前后顺充,对事件执行的先后顺序也没有影响.
#15
把dw所在窗口的语法导出来,找到this.Control[] = {。。。}在{}中你会看到his.dw_2,&this.dw_1,将dw_1与dw_2互换,然后保存,最后导入窗口所在PBL就可以了
#16
to: caic(猜猜)
导出 *.srw,用ultraedit 打开,找不到 this.Control[]
用editsource 打开,也找不到.
导出 *.srw,用ultraedit 打开,找不到 this.Control[]
用editsource 打开,也找不到.
#17
用ultraedit 打开,有啊!
#18
用ultraedit 打开,有啊!注意去掉空格
#19
是有,
不错,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,原来这样,想了好长时间,原来如此.
不错,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,原来这样,想了好长时间,原来如此.
#20
呵呵,有意思,
楼主千方百计寻找问题根源,最终功夫不负有心人,找到了答案;
楼上的高手千方百计用别的方法控制顺序,也都各有各的办法。
最后是大家都解决了各自的问题,呵呵,好一个八仙过海……
然后是我,又多了点见识,呵呵,多谢多谢……
楼主千方百计寻找问题根源,最终功夫不负有心人,找到了答案;
楼上的高手千方百计用别的方法控制顺序,也都各有各的办法。
最后是大家都解决了各自的问题,呵呵,好一个八仙过海……
然后是我,又多了点见识,呵呵,多谢多谢……
#21
我用的是PB8,你用的是不是pb6?语法有点出入!
#22
PB8.0.3 9704
#1
实例变量。
#2
好像不能更改,所以最好不要用Construct事件.
自定义dw的初始化事件吧,在窗口的open事件中顺序调用,这样便于控制,例如
dw_1.event ue_initialize()
dw_2.event ue_initialize()
自定义dw的初始化事件吧,在窗口的open事件中顺序调用,这样便于控制,例如
dw_1.event ue_initialize()
dw_2.event ue_initialize()
#3
对
自定义dw的初始化事件吧,在窗口的open事件中顺序调用,这样便于控制,例如
dw_1.event ue_initialize()
dw_2.event ue_initialize()
程序都清晰、模块些。
自定义dw的初始化事件吧,在窗口的open事件中顺序调用,这样便于控制,例如
dw_1.event ue_initialize()
dw_2.event ue_initialize()
程序都清晰、模块些。
#4
建议:把dw_1,dw_2的Construct事件的代码都放到一个函数里面,如wf_xxx()
然后在FORM的OPEN事件中调用此wf_xxx(),这样灵活性更强些;
然后在FORM的OPEN事件中调用此wf_xxx(),这样灵活性更强些;
#5
这样你想把这些代码怎么顺序摆放都应该没有问题;
#6
不错,上面各位的方法我想应该可以,但我参考了一下PFC中的例程:
它既没有定义实例变量,也没有用自定义事件或函数,而是直接在DW的Construct事件中写的代码,但它每次都能控制Construct事件按顺序执行。
dw_1 -> dw_2 -> dw_3
====================================
大家可参考PFC example中的w_linkagescroll,w_linkageRetrieve,w_linkageFilter等等窗口;
这几个窗口都有一个共同的特征,就是(假设)dw_2 的Construct事件要用到 dw_1的Construct事件的结果。
是否还有其它技巧?
结贴时再加分!!
它既没有定义实例变量,也没有用自定义事件或函数,而是直接在DW的Construct事件中写的代码,但它每次都能控制Construct事件按顺序执行。
dw_1 -> dw_2 -> dw_3
====================================
大家可参考PFC example中的w_linkagescroll,w_linkageRetrieve,w_linkageFilter等等窗口;
这几个窗口都有一个共同的特征,就是(假设)dw_2 的Construct事件要用到 dw_1的Construct事件的结果。
是否还有其它技巧?
结贴时再加分!!
#7
他的dw应该是按3,2,1的顺序建立的吧,constructor应该是后建先触发的顺序.
#8
to: pufan()
不错,好象是这样,即按后建先触发的顺序,我后来重新按倒序(3,2,1)的顺序建了数据窗口,就能按 1,2,3的顺序执行了。
不错,好象是这样,即按后建先触发的顺序,我后来重新按倒序(3,2,1)的顺序建了数据窗口,就能按 1,2,3的顺序执行了。
#9
也不知道到底是什么原因,哪位知道的话,肯不肯出来讲一下。
#10
up
#11
在CONTROL LIST 里面更改DW的摆放顺序就可以实现了
先点选DW然后ANCESTOR就可以实现更改了
呵呵
很好玩,兄弟,以后多发现一些这样的偏问题供大家讨论,谢谢
先点选DW然后ANCESTOR就可以实现更改了
呵呵
很好玩,兄弟,以后多发现一些这样的偏问题供大家讨论,谢谢
#12
更正:是改变TAB顺序来修改执行顺序的
#13
可以在控件上点右键选择SEND TO BACK或者BRING TO FRONT来改变TAB顺序,具体修改搜寻中。。。
#14
to:louisa5155(蓝色城堡) 更正:是改变TAB顺序来修改执行顺序的
========================
如果修改tab order 的值 是无法实现 事件执行的先后顺序的。
SEND TO BACK或者BRING TO FRONT 好象只是置放控件的前后顺充,对事件执行的先后顺序也没有影响.
========================
如果修改tab order 的值 是无法实现 事件执行的先后顺序的。
SEND TO BACK或者BRING TO FRONT 好象只是置放控件的前后顺充,对事件执行的先后顺序也没有影响.
#15
把dw所在窗口的语法导出来,找到this.Control[] = {。。。}在{}中你会看到his.dw_2,&this.dw_1,将dw_1与dw_2互换,然后保存,最后导入窗口所在PBL就可以了
#16
to: caic(猜猜)
导出 *.srw,用ultraedit 打开,找不到 this.Control[]
用editsource 打开,也找不到.
导出 *.srw,用ultraedit 打开,找不到 this.Control[]
用editsource 打开,也找不到.
#17
用ultraedit 打开,有啊!
#18
用ultraedit 打开,有啊!注意去掉空格
#19
是有,
不错,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,原来这样,想了好长时间,原来如此.
不错,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,原来这样,想了好长时间,原来如此.
#20
呵呵,有意思,
楼主千方百计寻找问题根源,最终功夫不负有心人,找到了答案;
楼上的高手千方百计用别的方法控制顺序,也都各有各的办法。
最后是大家都解决了各自的问题,呵呵,好一个八仙过海……
然后是我,又多了点见识,呵呵,多谢多谢……
楼主千方百计寻找问题根源,最终功夫不负有心人,找到了答案;
楼上的高手千方百计用别的方法控制顺序,也都各有各的办法。
最后是大家都解决了各自的问题,呵呵,好一个八仙过海……
然后是我,又多了点见识,呵呵,多谢多谢……
#21
我用的是PB8,你用的是不是pb6?语法有点出入!
#22
PB8.0.3 9704