如何在Access for Runtime中重新创建内置的CommandBarPopup

时间:2016-08-12 07:38:01

标签: ms-access ms-access-2013 ms-access-2016

目前我正在开发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显示?

此致 丹尼尔

0 个答案:

没有答案