Foxtable(狐表)用户栏目专家坐堂 → 如何控制一个窗口完全打开完后才有打开另一个窗口


  共有2647人关注过本帖树形打印复制链接

主题:如何控制一个窗口完全打开完后才有打开另一个窗口

帅哥哟,离线,有人找我吗?
happyft
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1930 积分:17558 威望:0 精华:0 注册:2014/7/29 19:09:00
如何控制一个窗口完全打开完后才有打开另一个窗口  发帖心情 Post By:2016/5/7 22:27:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20160507221001.png
图片点击可在新窗口打开查看

项目的窗口中的table全部都是sqltable通过窗口的afterload中的代码在打开窗口时用函数fill表结构及设置很多窗口用到的全局变量的值,当在导航中点击不同的节点会打开不同的窗口,如果等一个窗口完全打开后即所有相应代码都运行完成后再打开另外一个窗口就没有什么问题。

如上图,先点击报废单后马上快速的点击采购入库单就会出错,原因就是第一个窗口的代码还没有运行完但点击第二个节点后当前活动窗口已经切换到“采购入库单” ,要如何控制不管用户点击不同的窗口多快,代码都是按所点击的顺序逐个运行每个窗口的代码而不出现上述错误 ,谢谢!

 回到顶部
帅哥哟,离线,有人找我吗?
HappyFt
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1930 积分:17558 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2016/5/8 16:36:00 [显示全部帖子]

还是不可以,在导航的目录树单击的错码

LockBasemainform
Do until Canopen = True  '等上一个窗口的代码运行完才能打开下一个窗口
    Application.DoEvents
Loop
Functions.Execute("OpenWindow",winName)  '打开窗口名为点击节点名称的窗口
UnLockBasemainform

上面Canopen是个全局变量,默认为true,打开窗口的函数第一行就将Canopen = false,    然后在函数最后一行再将Canopen = ture 
目的就是必须Canopen = true时才能打开窗口。但为什么不行呢?

如果将代码直接改为
LockBasemainform
if Canopen = True  then '等上一个窗口的代码运行完才能打开下一个窗口
    Functions.Execute("OpenWindow",winName)  '打开窗口名为点击节点名称的窗口
end if
UnLockBasemainform

同时在函数的最后一行再加个msgbox对话框如:
Canopen = true
msgbox(111)   '加上这一句每个窗口打开时显示它好象暂停一下似的就可以,不加就不行

老师要怎么办呢?




 回到顶部