目前我正在使用 Access 2013/2016 开发应用程序。此软件应仅可在具有 Access RUNTIME 引擎的客户端计算机上运行。现在我注意到所有功能区/上下文菜单在运行模式下都被停用。
现在我正在尝试自己创建必要的上下文菜单。这篇文章很有帮助,但我对 CommandBarPopups 有疑问。
我正在尝试创建相同的上下文菜单,您可以在表格的表格单元格/输入字段中看到。在那里,有一个非常好的过滤器按钮/弹出窗口,它考虑了单击单元格的底层数据类型。对于日期类型,它显示“日期过滤器”,对于文本类型“文本过滤器”等等......
我找到了这个菜单项的内部控件ID(31581),但它没有显示CommandBarPop的所有相关子菜单项。然后我尝试手动包含这个子项目,但它会一直显示所有子项目。标准的上下文菜单足够聪明,可以隐藏所有不相关的子项目(例如,对于文本类型,所有日期菜单,如下个月等......)
到目前为止,这是我的代码。注释行是我的问题。
Public Function CreateShortcutMenus()
On Error Resume Next
CommandBars("cmdFormFiltering").Delete
On Error GoTo 0
' Create the shortcut menu.
Dim cmdFormFiltering As Office.CommandBar
Set cmdFormFiltering = CommandBars.Add("cmdFormFiltering", msoBarPopup, False, True)
With cmdFormFiltering
' Add the Find command.
.Controls.Add msoControlButton, 141, , , True
' Start a new grouping and add the Sort Ascending command.
.Controls.Add(msoControlButton, 210, , , True).BeginGroup = True
' Add the Sort Descending command.
.Controls.Add msoControlButton, 211, , , True
' Start a new grouping and add the Remove Filer/Sort command.
.Controls.Add(msoControlButton, 605, , , True).BeginGroup = True
' Add the Filter FilterBySelection
.Controls.Add(msoControlButton, 640, , , True).BeginGroup = False
Dim popUpFilter As Office.CommandBarPopup
Set popUpFilter = .Controls.Add(msoControlPopup, 31581, , , True)
popUpFilter.BeginGroup = True
' popUpFilter.Controls.Add(msoControlButton, 10077, , , True).BeginGroup = False
' popUpFilter.Controls.Add(msoControlButton, 10078, , , True).BeginGroup = False
' popUpFilter.Controls.Add(msoControlButton, 10079, , , True).BeginGroup = False
' popUpFilter.Controls.Add(msoControlButton, 12696, , , True).BeginGroup = False
' popUpFilter.Controls.Add(msoControlButton, 10080, , , True).BeginGroup = False
' popUpFilter.Controls.Add(msoControlButton, 10081, , , True).BeginGroup = False
' popUpFilter.Controls.Add(msoControlButton, 10088, , , True).BeginGroup = False
' popUpFilter.Controls.Add(msoControlButton, 12697, , , True).BeginGroup = False
' popUpFilter.Controls.Add(msoControlButton, 12698, , , True).BeginGroup = False
' popUpFilter.Controls.Add(msoControlButton, 12699, , , True).BeginGroup = False
' popUpFilter.Controls.Add(msoControlButton, 10082, , , True).BeginGroup = False
' popUpFilter.Controls.Add(msoControlButton, 10083, , , True).BeginGroup = False
' popUpFilter.Controls.Add(msoControlButton, 10062, , , True).BeginGroup = False
' popUpFilter.Controls.Add(msoControlButton, 10063, , , True).BeginGroup = False
' popUpFilter.Controls.Add(msoControlButton, 10064, , , True).BeginGroup = False
' popUpFilter.Controls.Add(msoControlButton, 10065, , , True).BeginGroup = False
' popUpFilter.Controls.Add(msoControlButton, 16206, , , True).BeginGroup = False
' popUpFilter.Controls.Add(msoControlButton, 10067, , , True).BeginGroup = False
' popUpFilter.Controls.Add(msoControlButton, 10066, , , True).BeginGroup = False
' popUpFilter.Controls.Add(msoControlButton, 10058, , , True).BeginGroup = False
' popUpFilter.Controls.Add(msoControlButton, 10069, , , True).BeginGroup = False
' popUpFilter.Controls.Add(msoControlButton, 10070, , , True).BeginGroup = False
' popUpFilter.Controls.Add(msoControlButton, 10059, , , True).BeginGroup = False
' Add the Filter FilterEqualsSelection
.Controls.Add(msoControlButton, 10068, , , True).BeginGroup = True
' Add the Filter FilterNotEqualsSelection
.Controls.Add msoControlButton, 10071, , , True
End With
Set cmdFormFiltering = Nothing
End Function
我该怎么办,所有子项目将自动显示控件 ID 31581?
问候,丹尼尔