Office中国论坛/Access中国论坛

标题: 禁止使用Ctrl+P快捷键打印窗体数据 [打印本页]

作者: Charline    时间: 2016-5-2 17:20
标题: 禁止使用Ctrl+P快捷键打印窗体数据
请问各位老师,

怎么能实现在某个窗体打开后,禁止用户使用Ctrl+P的热键打印窗体数据,但是能在打印预览模式下使用快捷键打印报表呢?

我有在网上看到别的例子是使用autokeys的宏实现,但是此宏是全局禁用,然后我在宏条件下加入

if Screen.ActiveForm.Name = "MyForm" then 语句进行判断,然后发现一个问题,在以打印模式打开报表的时候,使用ctrl + P 热键就会报错,不知道怎么该怎么改呢?


提前谢谢各位老师的指点。
作者: zyp    时间: 2016-5-2 19:48
在窗体的键按下事件中加入代码就可以了

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If Shift = acCtrlMask And KeyCode = 80 Then
        MsgBox "不能打印", vbCritical, "友情提示"
    End If
End Sub
作者: Charline    时间: 2016-5-2 21:14
zyp 发表于 2016-5-2 19:48
在窗体的键按下事件中加入代码就可以了

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Intege ...

谢谢您的回复。

我已经在窗体键按下事件中加上这段代码了。


但是,能不能实现不弹出消息直接取消打印呢?


作者: roych    时间: 2016-5-3 03:24
怎么总觉得这是个伪命题呢?
不希望数据被打印出来,是很难做到的。即便禁用了这些键,仍然可以通过截屏来完成操作吧?再不济就用手机拍照咯。

另外,窗体不是用来打印数据的,而是用于跟用户交互的。如果需要展示数据(hardcopy),应该选择报表。使用报表则简单多了,通过按钮,可以说是完全可控。
作者: zyp    时间: 2016-5-3 10:49
Charline 发表于 2016-5-2 21:14
谢谢您的回复。

我已经在窗体键按下事件中加上这段代码了。

将中间msgbox 这行不要就可以了啊
作者: Charline    时间: 2016-5-11 17:51
roych 发表于 2016-5-3 03:24
怎么总觉得这是个伪命题呢?
不希望数据被打印出来,是很难做到的。即便禁用了这些键,仍然可以通过截屏来 ...

大师您过虑了,只是为了防止某些用户手痒按了热键打印个几百页。。。。
作者: Charline    时间: 2016-5-11 17:52
以下是装作什么事都没发生过的代码 。。。。。

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If Shift = acCtrlMask And KeyCode = 80 Then
        KeyCode = 0
    End If
End Sub




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3