Differenze tra le versioni di "Creare Menu da codice e non con l´Editor-Menu"
Da Gambas-it.org - Wikipedia.
Riga 6: | Riga 6: | ||
==Creando una routine-evento per ciascuna sotto-voce del Menu== | ==Creando una routine-evento per ciascuna sotto-voce del Menu== | ||
− | <FONT color= | + | <FONT color=gray>' ''Dichiariamo il Menu principale:''</font> |
'''Private''' mn As Menu | '''Private''' mn As Menu | ||
Riga 12: | Riga 12: | ||
'''Public''' Sub Form_Open() | '''Public''' Sub Form_Open() | ||
− | <FONT color= | + | <FONT color=gray>' ''Dichiariamo anche le sotto-voci del Menu:''</font> |
Dim mn1 As Menu | Dim mn1 As Menu | ||
Dim mn2 As Menu | Dim mn2 As Menu | ||
Riga 18: | Riga 18: | ||
Dim mn4 As Menu | Dim mn4 As Menu | ||
− | <FONT color= | + | <FONT color=gray>' ''Impostiamo il Menu principale, impostando come "contenitore" il Form:''</font> |
With mn = New Menu(Me) | With mn = New Menu(Me) | ||
<FONT color=#006400>' ''Gli diamo il testo che sarà mostrato:''</font> | <FONT color=#006400>' ''Gli diamo il testo che sarà mostrato:''</font> | ||
Riga 24: | Riga 24: | ||
End With | End With | ||
− | <FONT color= | + | <FONT color=gray>' ''Attribuiamo al Menu principale le sue sotto-voci, le quali attribuiamo ad un proprio Gruppo.'' |
' ''Inoltre, a tali sotto-voci diamo il testo che sarà mostrato e come "contenitore" il Menu principale:''</font> | ' ''Inoltre, a tali sotto-voci diamo il testo che sarà mostrato e come "contenitore" il Menu principale:''</font> | ||
With mn1 = New Menu(mn, False) As "mn1" | With mn1 = New Menu(mn, False) As "mn1" | ||
− | <FONT color= | + | <FONT color=gray>' ''Facciamo mostrare la denominazione della sotto-voce mediante ".Caption":''</font> |
.Caption = "Nuovo" | .Caption = "Nuovo" | ||
.Name = "Nuovo" | .Name = "Nuovo" | ||
Riga 52: | Riga 52: | ||
'''Public''' Sub mn1_Click() | '''Public''' Sub mn1_Click() | ||
− | <FONT color= | + | <FONT color=gray>' ''qui fa qualcosa...''</font> |
'''End''' | '''End''' | ||
Riga 58: | Riga 58: | ||
'''Public''' Sub mn2_Click() | '''Public''' Sub mn2_Click() | ||
− | + | <FONT color=gray>' ''qui fa qualcosa...''</font> | |
− | |||
'''End''' | '''End''' | ||
Riga 65: | Riga 64: | ||
'''Public''' Sub mn3_Click() | '''Public''' Sub mn3_Click() | ||
− | + | <FONT color=gray>' ''qui fa qualcosa...''</font> | |
'''End''' | '''End''' | ||
Riga 71: | Riga 70: | ||
'''Public''' Sub mn4_Click() | '''Public''' Sub mn4_Click() | ||
− | + | <FONT color=gray>' ''qui fa qualcosa...''</font> | |
− | |||
'''End''' | '''End''' | ||
Riga 93: | Riga 91: | ||
End With | End With | ||
− | <FONT color= | + | <FONT color=gray>' ''Per far apparire nel Menu principale le sue sotto-voci con "specifiche" denominazioni:''</font> |
For i = 0 To 3 | For i = 0 To 3 | ||
Select Case i | Select Case i | ||
Riga 106: | Riga 104: | ||
End Select | End Select | ||
− | <FONT color= | + | <FONT color=gray>' ''Crea una nuova sotto-voce del Menu principale, e viene assegnata ad un unico Gruppo:''</font> |
− | |||
With subMn = New Menu(mn) <FONT color=#B22222>As "SubMn"</font> | With subMn = New Menu(mn) <FONT color=#B22222>As "SubMn"</font> | ||
.Caption = testo | .Caption = testo | ||
Riga 120: | Riga 117: | ||
'''Public''' Sub subMn_Click() | '''Public''' Sub subMn_Click() | ||
− | <FONT color= | + | <FONT color=gray>' ''Riscontriamo quale sotto-voce abbiamo scelto:''</font> |
Message.Info("Hai premuto il sotto-menu: " & Last.Name) | Message.Info("Hai premuto il sotto-menu: " & Last.Name) | ||
Riga 142: | Riga 139: | ||
mn1 = New Menu(mn, False) | mn1 = New Menu(mn, False) | ||
With mn1 | With mn1 | ||
− | <FONT color= | + | <FONT color=gray>' ''Facciamo mostrare la denominazione della sotto-voce mediante ".Caption":''</font> |
.Caption = "Nuovo" | .Caption = "Nuovo" | ||
.Name = "Nuovo" | .Name = "Nuovo" | ||
Riga 177: | Riga 174: | ||
Dim obj As Object = Last | Dim obj As Object = Last | ||
− | <FONT color= | + | <FONT color=gray>' ''Riscontriamo quale sotto-voce abbiamo scelto:''</font> |
Message.Info("Hai premuto il menu: " & Last.Name) | Message.Info("Hai premuto il menu: " & Last.Name) | ||
Riga 195: | Riga 192: | ||
− | <FONT color= | + | <FONT color=gray>' ''Crea un'oggetto "Window":''</font> |
With w = New Window | With w = New Window | ||
.W = 200 | .W = 200 | ||
Riga 203: | Riga 200: | ||
End With | End With | ||
− | <FONT color= | + | <FONT color=gray>' ''Crea un Menu attribuendolo all'ggetto "Window":''</font> |
With mn = New Menu(w) | With mn = New Menu(w) | ||
.Name = "prova_Menu" | .Name = "prova_Menu" | ||
Riga 221: | Riga 218: | ||
End Select | End Select | ||
− | <FONT color= | + | <FONT color=gray>' ''Crea una nuova sotto-voce del Menu principale,'' |
' ''e l'assegna al medesimo Gruppo delle altre sotto-voci:''</font> | ' ''e l'assegna al medesimo Gruppo delle altre sotto-voci:''</font> | ||
With subMn = New Menu(mn) As "SubMn" | With subMn = New Menu(mn) As "SubMn" | ||
Riga 235: | Riga 232: | ||
'''Public''' Sub subMn_Click() | '''Public''' Sub subMn_Click() | ||
− | <FONT color= | + | <FONT color=gray>' ''Riscontriamo quale sotto-voce abbiamo scelto:''</font> |
Message.Info("Hai premuto il sotto-menu: " & Last.Name) | Message.Info("Hai premuto il sotto-menu: " & Last.Name) | ||
'''End''' | '''End''' |
Versione delle 07:48, 19 ago 2014
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.
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: With mn = New Menu(Me) ' Gli diamo il testo che sarà mostrato: . Caption = "File" End With ' Attribuiamo al Menu principale le sue sotto-voci, le quali attribuiamo ad un proprio Gruppo. ' Inoltre, a tali sotto-voci diamo il testo che sarà mostrato e come "contenitore" il Menu principale: With mn1 = New Menu(mn, False) As "mn1" ' Facciamo mostrare la denominazione della sotto-voce mediante ".Caption": .Caption = "Nuovo" .Name = "Nuovo" End With With mn2 = New Menu(mn, False) As "mn2" .Caption = "Apri" .Name = "Apri" End With With mn3 = New Menu(mn, False) As "mn3" .Caption = "Salva con nome..." .Name = "Salva con nome..." End With With mn4 = New Menu(mn, False) As "mn4" .Caption = "Esci" .Name = "Esci" End With End Public Sub mn1_Click() ' qui fa qualcosa... End Public Sub mn2_Click() ' qui fa qualcosa... End Public Sub mn3_Click() ' qui fa qualcosa... End Public Sub mn4_Click() ' qui fa qualcosa... End
Assegnando un medesimo Gruppo alle sotto-voci del Menu
Mostriamo due modalità possibili per assegnare un medesimo Gruppo alle sotto-voci del Menu, e per associare ciascuna sotto-voce, in qualità di oggetto, ad un evento:
Private mn As Menu Private subMn as Menu Public Sub Form_Open() Dim mn As Menu Dim i As Integer Dim testo As String With mn = New Menu(FMain) .Caption = "File" End With ' 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, e viene assegnata ad un unico Gruppo: With subMn = New Menu(mn) As "SubMn" .Caption = testo .Name = testo End With Next End Public Sub subMn_Click() ' Riscontriamo quale sotto-voce abbiamo scelto: Message.Info("Hai premuto il sotto-menu: " & Last.Name) End
oppure:
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
Creare Menu ad un oggetto Window
E' possibile creare Menu anche per l'oggetto Window.
Come esempio riprendiamo in parte, ed opportunamente modificato, uno dei codici sopra descritti:
Public Sub Button1_Click() Dim w As Window Dim mn, subMn As Menu Dim i As Integer Dim testo As String ' Crea un'oggetto "Window": With w = New Window .W = 200 .H = 200 .Center .Show End With ' Crea un Menu attribuendolo all'ggetto "Window": With mn = New Menu(w) .Name = "prova_Menu" .Text = "menu" End With 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, ' e l'assegna al medesimo Gruppo delle altre sotto-voci: With subMn = New Menu(mn) As "SubMn" .Caption = testo .Name = testo End With Next End Public Sub subMn_Click() ' Riscontriamo quale sotto-voce abbiamo scelto: Message.Info("Hai premuto il sotto-menu: " & Last.Name) End