2

目前我正在使用 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?

问候,丹尼尔

4

0 回答 0