设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2136|回复: 6
打印 上一主题 下一主题

[Access本身] 禁止使用Ctrl+P快捷键打印窗体数据

[复制链接]

点击这里给我发消息

跳转到指定楼层
1#
发表于 2016-5-2 17:20:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问各位老师,

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

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

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


提前谢谢各位老师的指点。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2016-5-2 19:48:59 | 只看该作者
在窗体的键按下事件中加入代码就可以了

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If Shift = acCtrlMask And KeyCode = 80 Then
        MsgBox "不能打印", vbCritical, "友情提示"
    End If
End Sub

点击这里给我发消息

3#
 楼主| 发表于 2016-5-2 21:14:29 | 只看该作者
zyp 发表于 2016-5-2 19:48
在窗体的键按下事件中加入代码就可以了

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

谢谢您的回复。

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


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

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

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

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

将中间msgbox 这行不要就可以了啊

点击这里给我发消息

6#
 楼主| 发表于 2016-5-11 17:51:46 | 只看该作者
roych 发表于 2016-5-3 03:24
怎么总觉得这是个伪命题呢?
不希望数据被打印出来,是很难做到的。即便禁用了这些键,仍然可以通过截屏来 ...

大师您过虑了,只是为了防止某些用户手痒按了热键打印个几百页。。。。

点击这里给我发消息

7#
 楼主| 发表于 2016-5-11 17:52:41 | 只看该作者
以下是装作什么事都没发生过的代码 。。。。。

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If Shift = acCtrlMask And KeyCode = 80 Then
        KeyCode = 0
    End If
End Sub
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-3 05:55 , Processed in 0.129333 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表