以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  在PrepareEdit中加入IsFocusCell反而有BUG?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=170914)

--  作者:vimin
--  发布时间:2021/8/11 11:10:00
--  在PrepareEdit中加入IsFocusCell反而有BUG?
帮助中有说,不要再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编辑过]

--  作者:有点蓝
--  发布时间:2021/8/11 11:37:00
--  
不可能的,绝对会死循环,请上传实例测试。

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

--  作者:vimin
--  发布时间:2021/8/11 12:08:00
--  
简单做了个实例。
表A,没有加e.isFocusCell, 点击B列,不会死循环
表B,加了,点击B列,死循环。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:test1.foxdb

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

--  作者:有点蓝
--  发布时间:2021/8/11 13:35:00
--  
一样会的,点一下B列标题行试试
--  作者:vimin
--  发布时间:2021/8/11 14:11:00
--  
好的,明白了