Creare Menu da codice e non con l'Editor-Menu
Vai alla navigazione
Vai alla ricerca
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.