概要 - カスケードサブ メニューを作成する(VBA/ActiveX)

カスケード サブメニューを追加するには、AddSubmenu メソッドを使用してサブメニューを作成します。

このメソッドは新しい PopupMenuItem オブジェクトを作成し、指定されたメニューに追加します。この特殊な PopupMenuItem オブジェクトにはタイプ acSubmenu が割り当てられます。

AddSubmenu メソッドは入力として、IndexLabel、および Tag という 3 つのパラメータを受け取ります。

Index パラメータは、メニュー内における新しいメニュー項目の位置を指定する整数です。インデックスは、タイトルに続くメニューの先頭位置として、位置ゼロ(0)から始まります。メニューの最後に新しいメニュー項目を追加するには、Index パラメータにメニューの Count プロパティと同じ値を指定します(メニューの Count プロパティはそのメニューのメニュー項目の合計数を表します)。

Label パラメータは、メニュー項目の内容と形式を定義する文字列です。メニュー項目としてユーザ向けに表示される文字のことをタイトルと呼び、ラベルに含まれているすべての DIESEL 文字列式と特殊コードを変換して生成されます。たとえば、ラベル "&Edit" からは、"Edit" が生成されます。

Tag パラメータは名前タグとも呼び、英数字とアンダースコア(_)からなる文字列です。この文字列は特定のメニュー内のメニュー項目を一意に識別するためのものです。

AddSubmenu メソッドは作成された PopupMenuItem オブジェクトを返しません。その代わりに、サブメニューが示している新しいメニューを返します。PopupMenu オブジェクトとして返された新しいメニューは、通常のメニューと同じように配置できます。

サブ メニューを作成、配置する

この例では、"TestMenu" という名前の新しいメニューを作成し、それを "OpenFile" という名前のサブメニューに追加します。次に、このサブメニューに "Open" という名前のメニュー項目を配置します。このメニュー項目は、図面を開きます。最後にこのメニューをメニュー バーに表示します。

Sub Ch6_AddASubMenu()
 Dim currMenuGroup As AcadMenuGroup
 Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)

 ' Create the new menu
 Dim newMenu As AcadPopupMenu
 Set newMenu = currMenuGroup.Menus.Add("TestMenu")

 ' Add the submenu
 Dim FileSubMenu As AcadPopupMenu
 Set FileSubMenu = newMenu.AddSubMenu("", "OpenFile")

 ' Add a menu item to the sub menu
 Dim newMenuItem As AcadPopupMenuItem
 Dim openMacro As String
 ' Assign the macro the VB equivalent of "ESC ESC _open "
 openMacro = Chr(3) + Chr(3) + "_open "

 Set newMenuItem = FileSubMenu.AddMenuItem _
 (newMenu.count + 1, "Open", openMacro)

 ' Display the menu on the menu bar
 newMenu.InsertInMenuBar _
 (ThisDrawing.Application.menuBar.count + 1)
End Sub