以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 列锁定问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=61443) |
-- 作者:lesliecheung912 -- 发布时间:2014/12/12 12:55:00 -- 列锁定问题 表A有四列(名称,种类,数量,件数),名称和种类从另一个表中取值,选择名称后种类自动取过来。 当种类 = “水果”时,数量列锁定,件数列解锁,当种类等于其他值时,数量列解锁,件数列锁定。 请问代码应该写在什么事件里,代码应该怎么写呢?
|
-- 作者:Bin -- 发布时间:2014/12/12 14:05:00 -- 在DataColChanged事件和 PrepareEdit 控制 参考 |
-- 作者:lesliecheung912 -- 发布时间:2014/12/12 14:46:00 -- 从另外一个表取值可以做到,但是锁定列怎么可以做到啊。如果是在PrepareEdit事件里面写,那得怎么写? 这样不行啊 If e.Col.Name = "产品名称" Then If Tables("表A").Current("种类") <> "水果" Tables("表A").Cols("数量").AllowEdit = False Tables("表A").Cols("数量").AllowEdit = True Else Tables("表A").Cols("数量").allowedit = True Tables("表A").Cols("件数").allowedit = False End If End If |
-- 作者:Bin -- 发布时间:2014/12/12 14:47:00 -- 你都没有参考帮助按照帮助的去做. 用的是e.cancel=true 请您先看一下2楼帮助哦
|
-- 作者:lesliecheung912 -- 发布时间:2014/12/12 15:02:00 -- 想了半天还是没想明白,劳烦BIN大哥指点迷津 |
-- 作者:有点甜 -- 发布时间:2014/12/12 15:05:00 -- PrepareEdit 事件
If e.Col.Name = "数量" Then If e.Row("种类") = "水果" Then e.Cancel = True End If
If e.Col.Name = "件数" Then If e.Row("种类") <> "水果" Then e.Cancel = True End If |
-- 作者:lesliecheung912 -- 发布时间:2014/12/12 15:14:00 -- 我是想锁定列,而不是禁止他编辑,而是给列加个小锁,这样更形象,请问在表事件可以完成这种操作吗? |
-- 作者:Bin -- 发布时间:2014/12/12 15:19:00 -- 这是不科学的,你这是根据当前行来判断的, 你把整列都锁定了, 那其他行符合条件的怎么办? 自相锚定的需求 只有禁止编辑才合理, 如果希望有标识,可以利用DrawCell事件
|
-- 作者:lesliecheung912 -- 发布时间:2014/12/12 15:24:00 -- 明白了,谢谢 |