Foxtable(狐表)用户栏目专家坐堂 → 当前表切换事件的问题,BUG?


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

主题:当前表切换事件的问题,BUG?

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


加好友 发短信
等级:一尾狐 帖子:457 积分:3523 威望:0 精华:0 注册:2016/1/22 18:17:00
当前表切换事件的问题,BUG?  发帖心情 Post By:2016/5/12 11:58:00 [只看该作者]

问题现象:
项目中有当前表切换事件 ,在当前表切换是将 当前表的 名称记录为一个 常量 当前表名称。
屏幕上显示的是 表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编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/12 12:15:00 [只看该作者]

这个事件是有点问题的,建议你在SystemIde事件检测当前表的变化触发代码

 

static ct As Table = CurrentTable
If ct.name <> CurrentTable.name Then
    ct = CurrentTable
    msgbox(ct.name)
End If


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


加好友 发短信
等级:六尾狐 帖子:1198 积分:7859 威望:0 精华:0 注册:2013/5/17 14:26:00
  发帖心情 Post By:2016/5/12 12:35:00 [只看该作者]

用户已经被屏蔽

 回到顶部
帅哥哟,离线,有人找我吗?
凡夫俗子
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:457 积分:3523 威望:0 精华:0 注册:2016/1/22 18:17:00
  发帖心情 Post By:2016/5/12 12:39:00 [只看该作者]

有BUG这个事件 等于废了

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/12 12:40:00 [只看该作者]

 看2楼方法。

 回到顶部
帅哥哟,离线,有人找我吗?
凡夫俗子
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:457 积分:3523 威望:0 精华:0 注册:2016/1/22 18:17:00
  发帖心情 Post By:2016/5/12 12:53:00 [只看该作者]

然后打开上面的寻个窗口:在窗口开启前 1居然显示了 23次,窗口显示后,1显示了1 次,为什么之前执行23次这个事件,有些想不通。 这个 反复被执行可能是什么原因造成的

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/12 14:21:00 [只看该作者]

看2楼啊。

 回到顶部
帅哥哟,离线,有人找我吗?
凡夫俗子
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:457 积分:3523 威望:0 精华:0 注册:2016/1/22 18:17:00
  发帖心情 Post By:2016/5/12 15:25:00 [只看该作者]

这个事件是有点问题的
意思是 意料之外的反复执行也就是 有点问题之内的?

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/12 15:51:00 [只看该作者]

以下是引用凡夫俗子在2016/5/12 15:25:00的发言:
这个事件是有点问题的
意思是 意料之外的反复执行也就是 有点问题之内的?

 

那你可以不用这个事件,而改成2楼的代码。


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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

....你原来的代码


 回到顶部
总数 14 1 2 下一页