以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 全局表事件 判断 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=113299) |
-- 作者:有点蓝 -- 发布时间:2018/1/12 20:37:00 -- If e.Cols.Contains("审核") Then If e.Row("审核") = True AndAlso User.Name <> "皮新华" Then e.Cancel = True MessageBox.Show("审核权限不够!") ElseIf e.Row("审核") = True Then \'如果此行已经审批了,则禁止修改 e.Cancel = True MessageBox.Show("审核不能更改!") End If End If |
-- 作者:有点蓝 -- 发布时间:2018/1/13 9:39:00 -- 1.去掉MessageBox.Show("审核权限不够!") 2、放到StartEdit事件 StartEdit事件的使用方法和PrepareEdit事件完全一样,实际上大部分PrepareEdit能完成的工作,都可以用StartEdit完成。
但是两者有细微差别;PrepareEdit事件的代码,一进入单元格就会执行,为可能开始的编辑工作做准备,所以执行效率会差一些,因为并不是每次进入单元格都是需要编辑的;而StartEdit只是在真正开始编辑的时候执行,效率会稍微好一点;不过这种效率的差别,我们并不会明显感觉得到。 此外用于设置列表项目的代码,最好不要用在StartEdit事件中,否则你选择某一单元格的时候,可能不会出现下拉箭头按钮,因为此时StartEdit事件并没有执行,列表项目当然也就没有准备好。 千万不要在PrepareEdit事件显示Messagebox这样的对话框,因为每次进入单元格就会出现提示,这样会导致死循环的出现;在StartEdit事件中显示对话框就 没有这个问题,因为此时只有用户真正做出编辑动作的时候,对话框才会显示。 |