Fare riferimento alle voci del Menu da altri Form

Da Gambas-it.org - Wikipedia.
Versione del 16 lug 2024 alle 18:04 di Vuott (Discussione | contributi) (Creata pagina con "Per fare genericamente riferimento da altri ''Form'' alle voci del ''Menu'', si possono adottare due modalità. ==Rendere "Globale" e "Pubblico" l'Oggetto che si riferisce al...")

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

Per fare genericamente riferimento da altri Form alle voci del Menu, si possono adottare due modalità.

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.