Fare riferimento alle voci del Menu da altri Form
Per fare genericamente riferimento da altri Form alle voci del Menu, si possono adottare due modalità.
Indice
Rendere "Globale" e "Pubblico" l'Oggetto che si riferisce al Menu
Se i menu sono fatti da codice e non nell'IDE, si può semplicemente rendere "Globale" e pubblico con la parola-chiave PUBLIC l'identificatore dell'istanza (Oggetto) del Menu:
Public OggettoMenu As Menu Public Sub Form_Open() OggettoMenu = New Menu(Me) ...etc... End
Nell'altro Form (esterno a quello che contiene il Menu), si richiama l'identificatore del Menu:
Print FMain.OggettoMenu.Children.Count
Usare la Proprietà array "Window.Menus"
Questa Proprietà restituisce una raccolta di tutti i menu della barra dei menu della finestra.
Tutte le forme visibili e non visibili di Menu di livello superiore e quindi i loro figli sono accessibili da quella Proprietà di tipo array.
For Each OggettoMenu As Menu In FMain.Menus Print OggettoMenu.Name; " possiede "; hMenu.Children.Count; " figli."
Next
Usare l'Evento "Action_Activate()"
Si può fare uso dell'Evento "_Activate()" della Classe Action da porre nel codice del Form principale contente il Menu.
Nel seguente esempio si dispone un Form, che ha il Menu e il seguente codice: [nota 1]
Public Sub Action_Activate(sKey As String) As Boolean Select Case sKey Case "act-2" Print "Il Menu2 di FMain cliccato da Form1" Case "act-3" Print "Il Menu3 di FMain cliccato da Form1" Case "act-4" Print "Il Menu4 di FMain cliccato da Form1" End Select End
Mentre in un altro Form (secondario) si avrà il seguente codice e un ComboBox con diverse voci:
Public Sub Button1_Click() FMain.Action_Activate(ComboBox1.Text) End
Note
[1] Il codice è stato suggerito da Gianluigi, moderatore del forum gambas-it.org.