The following SA2001.Application events may assist macro code when deciding when to make menu visibility changes:
▪MainMenuUpdate: When the whole menu is affected
▪MethodMenuUpdate: When dictionary type menu items are updated
▪ToolsMenuUpdate: When tools type menu items are updated
▪ReportsMenuUpdate: When report type menu items are updated
▪App_ShutDown: When System Architect shuts down
Events are NO LONGER required to keep user items in the menus. However if you want to remove items from a menu, the following sections of code provide the outline for such event handling. (Note: The project is called 'MyProject')
MODULE: AutoExec
' Main module which maintains the Microsoft Visual Basic Application based event handler
Dim EventHandler As EventCls
' Main Subroutine which starts the event handler
Sub Main()
Set EventHandler = New EventCls ' Create an event handler
Set EventHandler.App = Application ' Connect the event handler to System Architect
' Perform any additional start up work here
' This is a good place to add you BMPs and create your PopUp menus
InitBMPs
InitPopUps
End Sub
Sub InitBMPs()
Dim x As Integer
x = Application.AssignBMPtoMacroItem("MyProject.MyModule.PRINTDIAGRAMS", "SAWORD.BMP")
End Sub
Sub InitPopUps()
Dim x As Integer
' NB: Once a popup is created, it remains until it is removed by 'RemovePopupMenu', and can be added/removed from menus at will.
' Create the popup menu with its bitmap
x = Application.CreatePopUpMenu("Sample Macros","SAWORD.BMP")
' Add the item to the popup
x = Application.InsertMacroItemInMenu("MyProject.MyModule.PRINTDIAGRAMS", "&Print a Diagram", "Sample Macros")
End Sub
CLASS - EventCls
Public WithEvents App As Application ' The application which will raise events
Private Sub Class_Initialize()
' No need to do anything
End Sub
Private Sub Class_Terminate()
' No need to do anything
End Sub
Private Sub App_ReportsMenuUpdate()
' Reports menu has been redrawn
Dim x As Long
x = App.SetSeparatorBefore("&Report Generator...", "&Reports", True)
' Insert a menu item in the 'Reports' menu, before the 'Report Generator...' item, called 'Print all Diagrams' which calls PrintDiagrams2
x = App.InsertMacroItemInMenu("MyProject.MyModule.PRINTDIAGRAMS2", "Print all &Diagrams", "&Reports", "&Report Generator...")
' Insert our popup menu 'Sample Macros' in the 'Reports' menu, before the 'Print all Diagrams' item.
' NB: You should not keep destroying and creating popups here, unless you have a good reason - do this once at initialization.
x = App.InsertPopupMenuItemInMenu("Sample Macros", "&Reports", "Print all &Diagrams")