目前我正在开发Access 2013/2016的应用程序。此软件应仅在具有Access RUNTIME引擎的客户端计算机上运行。现在我注意到所有的Ribbons / Context Menus都在RUNTIME模式下被停用。
现在我正在尝试自己创建必要的上下文菜单。这个article帮了很多忙,但是我遇到了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显示?
此致 丹尼尔