Share via


IsHierarchical Property [Visio 2003 SDK Documentation]

Indicates whether a menu, menu item, or toolbar item is hierarchical; that is, whether it contains a drop-down menu that contains more items, which can in turn be accessed by iterating through the MenuItems or ToolbarItems collection of the menu, menu item, or toolbar.

intRet = object**.IsHierarchical**

intRet     Integer. True (-1) if the object represents a hierarchical menu, menu item, or toolbar item; otherwise, False (0).

object     Required. An expression that returns a Menu, MenuItem, or ToolbarItem object.

Version added

4.0

Remarks

The value of the CmdNum property of a MenuItem object that represents a hierarchical menu should be zero (0). This corresponds to the Microsoft Office Visio constant visCmdHierarchical.

Example

This Microsoft Visual Basic for Applications (VBA) macro shows how to use the IsHierarchical property to delete a hierarchical menu.

To restore Visio's built-in menus after you run this macro, call the ThisDocument.ClearCustomMenus method.

Public Sub IsHierarchical_Example()
 
    Dim vsoUIObject As Visio.UIObject 
    Dim vsoMenuSet As Visio.MenuSet   
    Dim vsoMenu As Visio.Menu 
    Dim vsoMenuItems As Visio.MenuItems 
    Dim vsoMenuItem As Visio.MenuItem 
    Dim vsoHierarchicalMenuItems As Visio.MenuItems 
    Dim vsoHierarchicalMenuItem As Visio.MenuItem
 
    'True if variable represents a hierarchical menu item. 
    Dim blsHierarchicalState As Boolean

    Dim intCounterOuter As Integer
    Dim intCounterInner As Integer

    'Get the UIOject object for the copy of the built-in menus. 
    Set vsoUIObject = Visio.Application.BuiltInMenus 

    'Set vsoMenuSet to the drawing menu set. 
    Set vsoMenuSet = vsoUIObject.MenuSets.ItemAtID(visUIObjSetDrawing) 

    'Get the Tools menu. Because you got the built-in 
    'menus, you know that you can find the Tools menu by its 
    'position. If you had retrieved a custom UI, you would have 
    'to loop through the menus checking the caption to find 
    'the Tools menu. When you use a custom menu, there is no 
    'guarantee that you will find a Tools menu, because it 
    'could have been deleted. 
    Set vsoMenu = vsoMenuSet.Menus(5) 

    'Get the MenuItems collection for the Tools menu. 
    Set vsoMenuItems = vsoMenu.MenuItems  

    'Locate the Macros menu item. Because you got the 
    'built-in menus, you know you will find it. If you had 
    'started from a custom menu, you would need to handle 
    'the case of not finding the menu item. 
    For intCounterOuter = 0 To vsoMenuItems.Count - 1
 
        'Retrieve the current menu item from the collection. 
        Set vsoMenuItem = vsoMenuItems(intCounterOuter) 

        'Check CmdNum to see if it is Macro. 
        If vsoMenuItem.CmdNum = visCmdHierarchical And _ 
            vsoMenuItem.Caption = "&Macros"  Then

            'The value of blsHierarchicalState is True. 
            blsHierarchicalState = vsoMenuItem.IsHierarchical 

            'Get the MenuItems collection for the 
            'hierarchical menu. 
            Set vsoHierarchicalMenuItems = vsoMenuItem.MenuItems 

            'Locate the Visual Basic Editor menu item. 
            'As with the Macros menu item, you know you will 
            'find the Visual Basic Editor menu item 
            'because you started with a copy of 
            'the built-in menus. 
            For intCounterInner = 0 To vsoHierarchicalMenuItems.Count - 1
 
                'Retrieve menu item from collection. 
                Set vsoHierarchicalMenuItem = vsoHierarchicalMenuItems(intCounterInner) 

                'Check CmdNum. 
                If vsoHierarchicalMenuItem.CmdNum = visCmdToolsRunVBE Then

                    'Delete the Visual Basic Editor menu item. 
                    vsoHierarchicalMenuItem.Delete
 
                    'Exit the inner For loop. 
                    Exit For 

                End If  

            Next intCounterInner 

            'Exit the outer For loop. 
            Exit For 

        End If  

    Next intCounterOuter 

    'Tell Microsoft Office Visio to use the custom user interface 
    'while the document is active. 
    ThisDocument.SetCustomMenus vsoUIObject 

End Sub

Applies to | Menu object | MenuItem object | ToolbarItem object

See Also | CmdNum property