カスケード サブメニューを追加するには、AddSubmenu メソッドを使用してサブメニューを作成します。
このメソッドは新しい PopupMenuItem オブジェクトを作成し、指定されたメニューに追加します。この特殊な PopupMenuItem オブジェクトにはタイプ acSubmenu が割り当てられます。
AddSubmenu メソッドは入力として、Index、Label、および 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