以文本方式查看主题 - 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列,死循环。
[此贴子已经被作者于2021/8/11 12:14:35编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2021/8/11 13:35:00 -- 一样会的,点一下B列标题行试试 |
||||
-- 作者:vimin -- 发布时间:2021/8/11 14:11:00 -- 好的,明白了 |