Creare Menu da codice e non con l'Editor-Menu
Da Gambas-it.org - Wikipedia.
Versione del 13 ott 2012 alle 17:44 di Vuott (Discussione | contributi) (Nuova pagina: Come è noto, per creare un classico Menu si utilizza l'apposito ''Editor'', che viene aperto premendo i due tasti ''ctrl'' + ''e''; ma qui prendiamo in considerazione la possibilità ...)
Come è noto, per creare un classico Menu si utilizza l'apposito Editor, che viene aperto premendo i due tasti ctrl + e; ma qui prendiamo in considerazione la possibilità di realizzare un Menu mediante il codice.{1}
Dovremo, inoltre, collegare un evento alle sotto-voci del Menu principale, che venga solleato quando clicchiamo su una di quelle.
Prendiamo in considerazione tre modalità.
Creando una routine-evento per ciascuna sotto-voce del Menu:
' Dichiariamo il Menu principale: Private mn As Menu Public Sub Form_Open() ' Dichiariamo anche le sotto-voci del Menu: Dim mn1 As Menu Dim mn2 As Menu Dim mn3 As Menu Dim mn4 As Menu ' impostiamo il Menu principale, impostando come "contenitore" il Form: mn = New Menu(Me) ' gli diamo il testo che sarà mostrato: mn.Caption = "File" ' attribuiamo al Menu principale le sue sotto-voci, ' alle quali diamo il testo che sarà mostrato, ' e come "contenitore" il Menu principale: mn1 = New Menu(mn, False) With mn1 ' Facciamo mostrare la denominazione della sotto-voce mediante ".Caption": .Caption = "Nuovo" .Name = "Nuovo" End With mn2 = New Menu(mn, False) With mn2 .Caption = "Apri" .Name = "Apri" End With mn3 = New Menu(mn, False) With mn3 .Caption = "Salva con nome..." .Name = "Salva con nome..." End With mn4 = New Menu(mn, False) With mn4 .Caption = "Esci" .Name = "Esci" End With End Public Sub mn1_Click() ' qui fa qualcosa... End Public Sub mn2_Click() etc etc ...
Assegnando un medesimo gruppo alle sotto-voci del Menu:
Private mn As Menu Public Sub Form_Open() Dim mn1 As Menu Dim i As Integer mn = New Menu(FMain) mn.Caption = "File" ' per far apparire nel Menu principale le sue sotto-voci con "specifiche" denominazioni: For i = 0 To 3 Select Case i Case 0 testo = "Nuovo" Case 1 testo = "Apri" Case 2 testo = "Salva con nome..." Case 3 testo = "esci" End Select ' crea una nuova sotto-voce del Menu principale: tmp = New Menu(mn1) As "menu1" tmp.Caption = testo tmp.Name = testo tmp.Tag = "tag" & i Next End Public Sub menu1_Click() ' Riscontriamo quale sotto-voce abbiamo scelto: Message.Info("Hai premuto il sotto-menu " & Last.Name) End
Associando ciascuna sotto-voce, in qualità di oggetto, ad un evento:
Private mn As Menu Public Sub Form_Open() Dim mn1 As Menu Dim mn2 As Menu Dim mn3 As Menu Dim mn4 As Menu Dim testo As String mn = New Menu(Fmain) mn.Caption = "File" mn1 = New Menu(mn, False) With mn1 ' Facciamo mostrare la denominazione della sotto-voce mediante ".Caption": .Caption = "Nuovo" .Name = "Nuovo" End With mn2 = New Menu(mn, False) With mn2 .Caption = "Apri" .Name = "Apri" End With mn3 = New Menu(mn, False) With mn3 .Caption = "Salva con nome..." .Name = "Salva con nome..." End With mn4 = New Menu(mn, False) With mn4 .Caption = "Esci" .Name = "Esci" End With Object.Attach(mn1, Me, "ev") Object.Attach(mn2, Me, "ev") Object.Attach(mn3, Me, "ev") Object.Attach(mn4, Me, "ev") End Public Sub ev_Click() Dim obj As Object = Last ' Riscontriamo quale sotto-voce abbiamo scelto: Message.Info "Hai premuto il menu " & Last.Name End
Note
[1] Dobbiamo ringraziare gli utenti fsurfing e milio del forum gambas-it.org per i suggerimenti offerti al riguardo.