Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

[5分]ACCESS 数据表窗体如何防止Del键误删

乔峰  发表于:2017-08-11 19:10:52  
复制

2007版本以上,我们在操作主子窗体时,一般子窗体是可以用数据表的格式了, 有了汇总和隔行变色后既美观又方便, 面对自己的同事,有些同事并没有学过编程,所以为了防止误操作, 会在快捷菜单中禁用 <删除&D> 的功能, 免得被不小心删除 字段, 但是 禁掉  <删除&D> 的功能,还是有可能被误删的, 比如同事正好在子窗体中修改某个数值, 不小心把整个字段 都选中了, 然后 按了键盘上的 Del键, 然后就悲催了.

 

各位高手, 有无办法防止 这种事情呢? 

 

Top
仙来 发表于:2017-08-11 19:47:12
http://www.accessoft.com/article-show.asp?id=7884

乔峰 发表于:2017-08-11 20:03:12

仙来 版主: 谢谢你的答复.

 

昨天 , 我用 自动Autokeys  添加了这个  子宏 {Del}   , 然后 是 RunCode   ,   =DisabledDelete()   , 这个函数里面什么也没有, 只有这么一句  DisabledDelete=True , 确实 防止了DELETE键,  但是 我在子窗体 的输入 中 却也没法用 delete 更改,删除一部分字符了.

有无其他办法,两者兼顾 , 谢谢!

 



乔峰 发表于:2017-08-14 21:18:59

找到一个比较有效的办法

一般我们不会把数据表窗体单独作为一个窗体,而是作为子窗体的存在, 这样就好办了.

就是:         

 

 乾坤大挪移法---转移焦点法

 

在子窗体中的代码是如下:            当用户不小心单击到数据表子窗体的字段上,那么整列就会被选取,如果按DELETE键,那是很危险的事情, 如果用 Autokeys , {DEL} 宏进行屏蔽, 那我们就无法 delete 键 修改文本控件了, 这样就不方便了,下面的代码就解决了这个问题.      就是当鼠标点击选取到整列字段的时候, 我们把焦点转移出去.  按delete键 只会对主窗体上的文本控件有影响, 如果焦点开始位置设置好了,丝毫没有影响了. 

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)   '   不能用Form_MouseUp事件 ,只能是这个

    If IsLoaded("主窗体") Then
          Me.Parent.txtRemarks.SetFocus             '   可以自定一个主窗体上的控件, 而且是文本控件.

          Me.Parent.txtRemarks.SelStart = Len(Nz(Me.Parent.txtRemarks, ""))   

    End If
End Sub

 

'''''''''''''''''' Me.Parent  就是 主窗体  



乔峰 发表于:2017-08-15 09:23:42

还有更简单的方法

 

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    DoCmd.RunCommand acCmdSelectRecord
    Me.Form.Requery
End Sub



乔峰 发表于:2017-08-15 10:50:54
呵呵, 原来如此简单, 实际上 只要在窗体属性中 <允许布局视图> 上 选择  否

,看来不从基础开始学起,确实是有后遗症啊, 基础不牢(嘴上无毛),办事不牢.

总记录:5篇  页次:1/1 9 1 :