2

現在、Access 2013/2016 でアプリケーションを開発しています。このソフトウェアは、Access RUNTIME エンジンのみを搭載したクライアント マシンで実行できる必要があります。ランタイム モードでは、すべてのリボン/コンテキスト メニューが非アクティブになっていることに気付きました。

現在、必要なコンテキスト メニューを自分で作成しようとしています。この記事は大いに役立ちましたが、CommandBarPopups に問題があります。

フォームの表のセル/入力フィールドに表示されるのと同じコンテキスト メニューを作成しようとしています。その中には、クリックされたセルの基になるデータ型を考慮する非常に優れたフィルター ボタン/ポップアップがあります。日付タイプの場合は「日付フィルター」、テキスト タイプの場合は「テキスト フィルター」などが表示されます...

このメニュー項目 (31581) の内部コントロール ID を見つけましたが、関連する 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