以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  Load 加载 和 CurrentChanged 出现的问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=50223)

--  作者:shixia
--  发布时间:2014/5/2 8:44:00
--  Load 加载 和 CurrentChanged 出现的问题
打开主系统窗口,点击债权债务,选择第一或第二行,下方出现CurrentChanged 事件执行后出现的窗口,点击重新生成按钮,按钮里有Load 代码,一执行程序就自动退出。这是升级最新版后出现的问题。在以前版本中没有出现这个问题。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:新建文件夹 (2).rar


--  作者:lsy
--  发布时间:2014/5/2 9:50:00
--  

差不多就是这个原因了:

Current事件中,几个条件:CK、RK、Else,自动轮番触发,没完没了,死循环了。

如果代码放在Click事件中,就没问题。


--  作者:shixia
--  发布时间:2014/5/2 10:51:00
--  
1、去掉 Load 代码,执行重新生成按钮代码,一切正常,Current 事件照常在执行,也没有出现死循环
2、在重新生成按钮中 一开始就把 变量 pause = True,Current 事件中代码并不执行


[此贴子已经被作者于2014-5-2 10:59:37编辑过]

--  作者:lsy
--  发布时间:2014/5/2 11:08:00
--  

因为LOAD,Current值变了,触发事件,又LOAD,又触发事件:

结果:死循环。


--  作者:lsy
--  发布时间:2014/5/2 11:16:00
--  

CurrentChanged事件,非常灵敏,很多操作都可以导致当前行改变。

如果不预先考虑周全,这个事件,造成的漏洞,很难查找。


--  作者:shixia
--  发布时间:2014/5/2 11:30:00
--  
把变量 pause = True,停止执行CurrentChanged事件,再执行按钮后续Load代码,为什么还不行
--  作者:lsy
--  发布时间:2014/5/2 11:38:00
--  
停止执行,就不会出错。
--  作者:shixia
--  发布时间:2014/5/2 13:25:00
--  
我设置了 Pause 变量,在CurrentChanged事件中,设置代码 为
if  pause = True then
    Return
end if
在按钮代码中 一开始就设  pause = True,目的就是停止执行Currentchanged事件,但是照常出现问题

--  作者:lsy
--  发布时间:2014/5/2 13:43:00
--  
这个简单,直接在第一行:Return
--  作者:shixia
--  发布时间:2014/5/2 15:14:00
--  
那不等于 把CurrentChanged 事件中代码全删除?