以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  不能手动修改,但可以用代码修改  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=188422)

--  作者:lesei
--  发布时间:2023/9/19 22:05:00
--  不能手动修改,但可以用代码修改
能否设定某列的值(比如,逻辑列)不能手动修改,但可以用代码修改?
--  作者:有点蓝
--  发布时间:2023/9/19 22:34:00
--  
http://www.foxtable.com/webhelp/topics/0605.htm

在该表的PrepareEdit事件中输入:

If e.Col.Name = "某逻辑列" Then

    e.Cancel = True
End
 
If


--  作者:lesei
--  发布时间:2023/10/18 19:21:00
--  
伟大的版主,请问为什么会这样?设定的cancel对代码为什么不起作用?
--  作者:有点蓝
--  发布时间:2023/10/18 19:58:00
--  
http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=150626
--  作者:lesei
--  发布时间:2023/10/18 20:53:00
--  
1.起初,我的问题是:
能否设定某列的值(比如,逻辑列)不能手动修改,但可以用代码修改?
2.您回答给出了一段代码。
3.我在追问:
为什么您的代码能解决问题1?
因为按道理来说,无论是手动更改,还是代码更改,都应该会触发对应的事件,比如prepareedit,或者datacokchanging。
但为什么设定的cancel对“代码更改”无法阻拦,但对“手动更改”可以阻拦?原理是什么?
[此贴子已经被作者于2023/10/18 20:52:57编辑过]

--  作者:有点蓝
--  发布时间:2023/10/18 21:05:00
--  
注意看帮助每个事件的说明呗。有些事件比如PrepareEdit事件只有在单元格操作才会触发。

不过datacokchanging设定的cancel对“代码更改”一样可以阻拦,不要想当然,还是要仔细理解帮助的说明