将要进入编辑
在 BeforeEditMode事件中:如何使用户不进入编辑。 也就是说 比如:用户使用 键盘或鼠标将要编辑某个单元格,此时我发现该单元内容并不允许编辑,如果使他退出? 可能还是不够清楚:如:当我用鼠标、或键盘输入字符时。现在已经通过BeforeEditMode事件拦截;发现该单元格的内容已经不允许用户改变,这时如何使用户退出编辑模式(这当然是瞬间了)。 如取消编辑? 回复 3楼leikaihua的帖子
很抱歉,让您久等了。
退出编辑模式可以通过 EditMode 设置:
Me.fpSpread1.EditMode = False
回复 4楼iceman的帖子
多谢版主回答: 当 EditMode = false 的时候,虽然鼠标不能进入编辑。
但是按下键盘的字符仍旧可以进行编辑单元格的内容。 目标就是:拦截用户通过任何方式在某个单元格输入数据,然后不允许他做任何编辑。
就如同:用户将要编辑某个单元格,程序内部发现该单元格不允许编辑,然后使用户不允许通过任何方式再改变单元格内容。 回复 6楼leikaihua的帖子
可以设置 Lock 属性为 true 锁定这个单元格,代码如下:
Me.fpSpread1.Row = 1
Me.fpSpread1.Col = 1
Me.fpSpread1.Lock = True
回复 7楼iceman的帖子
结合 锁定 和 退出编辑 虽然可以勉强做到,但是实际根本不行。
因为 BeforeEditMode事件发生后,然后对传递来的单元格锁定和退出编辑。虽然此时该格已经锁定和编辑,但是仍旧有第一次的输入被输入进去了。
也就是说,锁定慢了一步。锁定是在BeforeEditMode发生之后才锁定了。
您可以尝试一下:如果 BeforeEditMode后锁定,虽然鼠标无法编辑,但是按下 键盘的字符或汉字,还是可以输入一次字符。第二次就不行了(因为已经锁定了)。。。
所以呢:这样不行。我就想问一下 难道不能对该事件返回假 让它如同没有发生吗?SPr 这个都没有考虑?还是? 回复 8楼leikaihua的帖子
可以设置事件中的参数 Cancel 为 true 来实现:
Private Sub fpSpread1_BeforeEditMode(ByVal Col As Long, ByVal Row As Long, ByVal UserAction As FPSpreadADO.BeforeEditModeActionConstants, CursorPos As Variant, Cancel As Variant)
Me.fpSpread1.EditMode = False
Me.fpSpread1.Row = Row
Me.fpSpread1.Col = Col
Me.fpSpread1.Lock = True
Cancel = True
End Sub
回复 9楼iceman的帖子
多谢版主:还有一个问题,就是在这个事件中,为啥拦截不到 ctrl+xctrl+v 呢? 这也是编辑么
页:
[1]
2