以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 当前表切换事件的问题,BUG? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=84873) |
-- 作者:凡夫俗子 -- 发布时间:2016/5/12 11:58:00 -- 当前表切换事件的问题,BUG? 问题现象: 项目中有当前表切换事件 ,在当前表切换是将 当前表的 名称记录为一个 常量 当前表名称。 屏幕上显示的是 表A (这时系统的“当前表名称”是,“表A”。 ) 再打开 一个窗口F 窗口中的表是 "窗口F_table1",该表是 SQL生成的表 ,在表中进行了操作,(这时系统的“当前表名称”是,“窗口F_table1”。 ) 通过命令窗口 msgbox(CurrentTable.name) 显示为 “窗口F_table1” 然后再关闭了窗口F,因"窗口F_table1"是SQL生成的表,所以窗口F关闭了,该表的生命周期也就结束了。即表已不存在了。 关闭了窗口F,则界面呈现了“表A”,此时,对于人而言,当前表是“表A”了 (这时系统的“当前表名称”是,"窗口F_table1"。 ) 但对于计算机或FOXTABLE而言,当前表也是“表A”,通过命令窗口 msgbox(CurrentTable.name) 显示正确 为表A 那么问题来了,说明FOXTABLE系统中 的当前表是切换了, 但是 项目中的 当前表切换事件中的代码没有执行? 经测试的确如此:在项目的当前表变化事件 中 一开始写上 msgox(1) 点表标题切换表时,这个1显示了两次,说明当前表变化事件执行了两次, 为什么要执行两次,有些想不通。 然后打开上面的寻个窗口:在窗口开启前 1居然显示了 23次,窗口显示后,1显示了1 次,为什么之前执行23次这个事件,有些想不通。 然后关闭这个窗口,1 一次也不显示,但系统当前表有切换 ,但1不显示 也想不通。 [此贴子已经被作者于2016/5/12 12:05:09编辑过]
|
-- 作者:大红袍 -- 发布时间:2016/5/12 12:15:00 -- 这个事件是有点问题的,建议你在SystemIde事件检测当前表的变化触发代码
static ct As Table = CurrentTable |
-- 作者:凡夫俗子 -- 发布时间:2016/5/12 12:39:00 -- 有BUG这个事件 等于废了 |
-- 作者:大红袍 -- 发布时间:2016/5/12 12:40:00 -- 看2楼方法。 |
-- 作者:凡夫俗子 -- 发布时间:2016/5/12 12:53:00 -- 然后打开上面的寻个窗口:在窗口开启前 1居然显示了 23次,窗口显示后,1显示了1 次,为什么之前执行23次这个事件,有些想不通。 这个 反复被执行可能是什么原因造成的 |
-- 作者:大红袍 -- 发布时间:2016/5/12 14:21:00 -- 看2楼啊。 |
-- 作者:凡夫俗子 -- 发布时间:2016/5/12 15:25:00 -- 这个事件是有点问题的 意思是 意料之外的反复执行也就是 有点问题之内的?
|
-- 作者:大红袍 -- 发布时间:2016/5/12 15:51:00 -- 以下是引用凡夫俗子在2016/5/12 15:25:00的发言:
这个事件是有点问题的 意思是 意料之外的反复执行也就是 有点问题之内的?
那你可以不用这个事件,而改成2楼的代码。 |
-- 作者:狐狸爸爸 -- 发布时间:2016/5/12 16:06:00 -- 关闭窗口不触发CurrentTableChanged事件的问题,明天修正。 至于事件执行两次,是正常的,如果想避免重复执行,可以:
Static ln as string If CurrentTable Isnot Nothing then if CurrentTable.Name = ln Then Return Else ln = CurrentTable.Name Endif end if ....你原来的代码 |
-- 作者:凡夫俗子 -- 发布时间:2016/5/12 16:13:00 -- 执行两次 是可以接受的,但执行23次就不知 是啥原因引起的 |