Adds a submenu to an existing menu.
Supported platforms: Windows only
VBA:
RetVal = object.AddSubMenu(Index, Label)
Type: PopupMenu
The object this method applies to.
Access: Input-only
Type: Variant
The index location in the menu where the item is to be added.
If an integer is used to specify a given location in the menu, the index must be between 0 and N-1, where N is the number of objects in the popup menu. The new item will be added immediately before the specified index location. To add the new menu item to the end of a menu, set the index to be greater than N.
If a string is specified and the indexed item does not exist, then the new menu item is added at the end of the menu.
Access: Input-only
Type: String
The label for the menu item. The label may contain DIESEL string expressions. Labels also identify the accelerator keys (keyboard key sequences) that correspond to the menu item by placing an ampersand (&) in front of the accelerator character.
Type: PopupMenu
The newly created submenu. This new cascading menu is blank, and can be populated with standard menu handling techniques.
This method creates a new PopupMenuItem object and adds it to the designated menu. This special kind of PopupMenuItem object is assigned the type of acSubmenu.
In the following example menu, the Align Text menu item has been inserted into the Dimension menu at the 17th index. The Align Text menu item is of the type acSubmenu. All other menu entries in the example are of the type acMenuItem or acMenuSeparator. The small cascading menu that is displayed when Align Text is selected is the new menu that was returned by the AddSubmenu method. It has been populated using the AddMenuItem and AddSeparator methods.
VBA:
Sub Example_AddSubMenu() ' This example creates a new menu called TestMenu and inserts a submenu item ' called NewFile. It then creates a menu item, called open, ' on the submenu. ' The menu is then displayed on the menu bar. ' To remove the menu after execution of this macro, use the Customize Menu ' option from the Tools menu. 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("", "NewFile") ' Add a menu item to the sub menu Dim newMenuItem As AcadPopupMenuItem Dim openMacro As String ' Assign the macro string the VB equivalent of "ESC ESC _open " openMacro = Chr(3) & Chr(3) & Chr(95) & "open" & Chr(32) 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
Visual LISP:
(vl-load-com) (defun c:Example_AddSubMenu() ;; This example creates a new menu called TestMenu and inserts a submenu item ;; called NewFile. It then creates a menu item, called open, ;; on the submenu. ;; The menu is then displayed on the menu bar. ;; To remove the menu after execution of this macro, use the Customize Menu ;; option from the Tools menu. (setq acadObj (vlax-get-acad-object)) (setq currMenuGroup (vla-Item (vla-get-MenuGroups acadObj) 0)) ;; Create the new menu (setq newMenu (vla-Add (vla-get-Menus currMenuGroup) "TestMenu")) ;; Add the submenu (setq FileSubMenu (vla-AddSubMenu newMenu "" "NewFile")) ;; Assign the macro string the VB equivalent of "ESC ESC _open " (setq openMacro (strcat (Chr 3) (Chr 3) (Chr 95) "open" (Chr 32))) (setq newMenuItem (vla-AddMenuItem FileSubMenu (1+ (vla-get-Count newMenu)) "Open" openMacro)) ;; Display the menu on the menu bar (vla-InsertInMenuBar newMenu (1+ (vla-get-Count (vla-get-MenuBar acadObj)))) ;; Display the menu bar (vla-SetVariable doc "MENUBAR" 1) )