找回密码
 立即注册

QQ登录

只需一步,快速开始

leikaihua

注册会员

25

主题

78

帖子

193

积分

注册会员

积分
193

活字格认证

[已处理] 将要进入编辑

leikaihua
注册会员   /  发表于:2014-11-10 18:11  /   查看:10477  /  回复:13
在 BeforeEditMode  事件中:如何使用户不进入编辑。

13 个回复

倒序浏览
leikaihua
注册会员   /  发表于:2014-11-10 18:34:00
沙发
也就是说 比如:用户使用 键盘或鼠标将要编辑某个单元格,此时我发现该单元内容并不允许编辑,如果使他退出?
回复 使用道具 举报
leikaihua
注册会员   /  发表于:2014-11-11 17:57:00
板凳
可能还是不够清楚:
如:当我用鼠标、或键盘输入字符时。现在已经通过  BeforeEditMode  事件拦截;发现该单元格的内容已经不允许用户改变,这时如何使用户退出编辑模式(这当然是瞬间了)。 如取消编辑?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-11-11 18:38:00
地板
回复 3楼leikaihua的帖子

很抱歉,让您久等了。
退出编辑模式可以通过 EditMode 设置:

  1. Me.fpSpread1.EditMode = False
复制代码
回复 使用道具 举报
leikaihua
注册会员   /  发表于:2014-11-12 11:59:00
5#
回复 4楼iceman的帖子

多谢版主回答:   当 EditMode = false 的时候,虽然鼠标不能进入编辑。

但是按下键盘的字符仍旧可以进行编辑单元格的内容。
回复 使用道具 举报
leikaihua
注册会员   /  发表于:2014-11-12 12:05:00
6#
目标就是:拦截用户通过任何方式在某个单元格输入数据,然后不允许他做任何编辑。

就如同:用户将要编辑某个单元格,程序内部发现该单元格不允许编辑,然后使用户不允许通过任何方式再改变单元格内容。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-11-12 17:19:00
7#
回复 6楼leikaihua的帖子

可以设置 Lock 属性为 true 锁定这个单元格,代码如下:

  1. Me.fpSpread1.Row = 1
  2. Me.fpSpread1.Col = 1

  3. Me.fpSpread1.Lock = True
复制代码
回复 使用道具 举报
leikaihua
注册会员   /  发表于:2014-11-12 20:28:00
8#
回复 7楼iceman的帖子

结合 锁定 和 退出编辑 虽然可以勉强做到,但是实际根本不行。

因为 BeforeEditMode  事件发生后,然后对传递来的单元格锁定和退出编辑。虽然此时该格已经锁定和编辑,但是仍旧有第一次的输入被输入进去了。  

也就是说,锁定慢了一步。  锁定是在  BeforeEditMode  发生之后才锁定了。

您可以尝试一下:  如果 BeforeEditMode  后锁定,虽然鼠标无法编辑,但是按下 键盘的字符或汉字,还是可以输入一次字符。第二次就不行了(因为已经锁定了)。。。

所以呢:这样不行。我就想问一下 难道不能对该事件返回假 让它如同没有发生吗?  SPr 这个都没有考虑?还是?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-11-13 13:49:00
9#
回复 8楼leikaihua的帖子

可以设置事件中的参数 Cancel 为 true 来实现:

  1. Private Sub fpSpread1_BeforeEditMode(ByVal Col As Long, ByVal Row As Long, ByVal UserAction As FPSpreadADO.BeforeEditModeActionConstants, CursorPos As Variant, Cancel As Variant)

  2. Me.fpSpread1.EditMode = False
  3. Me.fpSpread1.Row = Row
  4. Me.fpSpread1.Col = Col

  5. Me.fpSpread1.Lock = True

  6. Cancel = True

  7. End Sub
复制代码
回复 使用道具 举报
leikaihua
注册会员   /  发表于:2014-11-13 19:13:00
10#
回复 9楼iceman的帖子

多谢版主:  还有一个问题,就是在这个事件中,为啥拦截不到 ctrl+x  ctrl+v 呢? 这也是编辑么
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部