【发布时间】:2016-06-29 07:49:01
【问题描述】:
我有一个 MS Access 数据库。 Shift 键之前已被禁用,但当用户按下 F11 时,她/他可以看到导航窗格。 是否有锁定 F11 键以防止打开导航窗格的解决方案?
【问题讨论】:
标签: ms-access
我有一个 MS Access 数据库。 Shift 键之前已被禁用,但当用户按下 F11 时,她/他可以看到导航窗格。 是否有锁定 F11 键以防止打开导航窗格的解决方案?
【问题讨论】:
标签: ms-access
首先,这里的答案没有意义,因为如果您有 100 个表单和 100 个报告,那么您就有 200 个对象需要修改。 (这极大地浪费了开发人员的时间)。
更糟糕的是,如果显示报告,则表单没有焦点,当您按 F11 时再次看到导航窗格。
20 年来,Access 一直能够运行代码并针对任何 Fkey 或 alt 键的点击采取措施来运行宏 - 这些设置对应用程序来说是全局的。
因此,简单的解决方案是为应用程序制作一个自动键宏并包含 F11。因此,这将对应用程序 GLOBAL 起作用。
因此创建一个名为 autokeys 的新宏(不是模块)。宏将如下所示:
您可以在{}中设置功能键
您也可以将 ^ 用于控制键(这样您就可以创建一个全局打印键) 例如:^P
你可以使用 + 作为 shift 键,所以
+{F11} 将是您按下 shift F11 时运行的宏代码
+^P 将是 shift+ctrl P
在上面我们可以使用 F11 运行代码或做任何我们想做的事情,例如启动一个表单,但如上所示,我们只是将 F11 代码块内的操作代码留空。因此,这可用于让 F1 启动自定义访问“帮助”表单,或将任何 GLOBAL 的 alt 键重新映射到应用程序。
然后,您只需取消选中当前数据库启动设置中的显示导航窗格即可。当然,作为开发人员,您将在启动过程中按住 shift 键以防止启动代码和表单启动——这也绕过自动键宏并忽略您在当前数据库中“设置”的所有设置,例如隐藏导航窗格。因此,按住 shift 键,您可以使用 F11 显示、隐藏导航窗格,并且不让您的应用程序启动代码运行,这样您就可以作为开发人员工作。
【讨论】:
+ 和^ 分别用于Shift 和Ctrl,但请告诉我Alt 的快捷键是什么?
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyF11
KeyCode = 0
MsgBox "F11 has been disabled.", vbOKOnly, "Disabled Key"
End Select
End Sub
这也可以用其他键来完成。只需添加另一个选择案例语句。
如果您决定在未来进行更改,请确保您有办法显示导航窗格 - 否则您可能无法进行更改。
【讨论】:
先尝试在谷歌上搜索您的问题。我能够找到多种解决方案。
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyF11 Then KeyCode = 0
End Sub
'(you need to set the form's Key Preview to Yes)
或者试试
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyF11 Then
MsgBox "F11 key is Disabled", vbCritical, "Error"
End If
End Sub
或者这个:
File -> Option -> Current DB -> Use Access special Keys (Uncheck)
【讨论】:
我认为此链接将提供您正在寻找的答案。
您要查找的功能可以在文件 --> 选项 --> 当前数据库 --> 取消选择“使用访问特殊键”下找到
这将阻止用户使用 F11 Alt+F11 等。
https://docs.microsoft.com/en-us/office/vba/access/concepts/miscellaneous/allowspecialkeys-property
用户仍然可以在打开数据库时按住 shift,然后授予对这些特殊键的访问权限。
【讨论】: