Foxtable(狐表)用户栏目专家坐堂 → 在PrepareEdit中加入IsFocusCell反而有BUG?


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

主题:在PrepareEdit中加入IsFocusCell反而有BUG?

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


加好友 发短信
等级:幼狐 帖子:158 积分:1536 威望:0 精华:0 注册:2018/4/11 21:01:00
在PrepareEdit中加入IsFocusCell反而有BUG?  发帖心情 Post By:2021/8/11 11:10:00 [只看该作者]

帮助中有说,不要再PrepareEdit中加入messagebox.show,因为会死循环。
我今天试了一下,
if e.col.name = "列B" then
messagebox.show("aa")
end if
其实并没有出现死循环,因为我鼠标点击列B的时候,弹出了对话框,但实际焦点回到之前的框,如列A中,
但是如果加了IsFocusCell的判断,反而有问题,
if e.IsFocusCell then
if e.col.name = "列B" then
messagebox.show("aa")
end if
endif
这个代码,我只要用鼠标点击了列B,则马上焦点会跳到列B中,然后对话框就进入了死循环。(在点对话框确定按钮时有一点点间隙可以把焦点离开)

测试这个问题是因为我有一张表有一个“省市区”的动态列表,也是根据帮助文件写的
if e.IsFocusCell then
if e.col.name = "省" then
外部数据源获取省列表
elseif e.col.name = "市" then
外部数据源根据省的值获取市列表
elseif e.col.name = "区" then
外部数据源根据市的值获取市列表
end if
endif
如果按照测试,上面这个代码等于我按了“省”列之后,实际上一直在后台连接外部数据?这样代码是否反而有问题了?

请版主或者高手帮忙测试解答下。谢谢!
[此贴子已经被作者于2021/8/11 11:12:08编辑过]

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


加好友 发短信
等级:超级版主 帖子:106097 积分:539590 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/8/11 11:37:00 [只看该作者]

不可能的,绝对会死循环,请上传实例测试。

至于PrepareEdit会执行比较频繁,不停连接外部数据是肯定的,像这种省市区的东西,数据不多,经常使用,应该一次性加载进来

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


加好友 发短信
等级:幼狐 帖子:158 积分:1536 威望:0 精华:0 注册:2018/4/11 21:01:00
  发帖心情 Post By:2021/8/11 12:08:00 [只看该作者]

简单做了个实例。
表A,没有加e.isFocusCell, 点击B列,不会死循环
表B,加了,点击B列,死循环。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:test1.foxdb

[此贴子已经被作者于2021/8/11 12:14:35编辑过]

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


加好友 发短信
等级:超级版主 帖子:106097 积分:539590 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/8/11 13:35:00 [只看该作者]

一样会的,点一下B列标题行试试

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


加好友 发短信
等级:幼狐 帖子:158 积分:1536 威望:0 精华:0 注册:2018/4/11 21:01:00
  发帖心情 Post By:2021/8/11 14:11:00 [只看该作者]

好的,明白了

 回到顶部