Differenze tra le versioni di "Creare Menu da codice e non con l'Editor-Menu"
(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à ...) |
|||
Riga 1: | Riga 1: | ||
− | Come è noto, per creare un classico Menu si utilizza l'apposito | + | 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. | 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== | |
− | + | '''Public''' Sub Form_Open() | |
− | + | ||
− | <FONT color= | + | <FONT color=gray>' ''Dichiariamo il Menu principale:''</font> |
− | + | Dim mn As Menu | |
− | + | ||
− | + | <FONT color=gray>' ''Dichiariamo anche le sotto-voci del Menu:''</font> | |
− | |||
− | |||
− | <FONT color= | ||
Dim mn1 As Menu | Dim mn1 As Menu | ||
Dim mn2 As Menu | Dim mn2 As Menu | ||
Dim mn3 As Menu | Dim mn3 As Menu | ||
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) | |
− | + | <FONT color=gray>' ''Gli diamo il testo che sarà mostrato:''</font> | |
− | <FONT color= | + | . Caption = "File" |
− | + | 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> |
− | + | With mn1 = New Menu(mn, False) As "mn1" | |
− | mn1 = New Menu(mn, False) | + | <FONT color=gray>' ''Facciamo mostrare la denominazione della sotto-voce mediante ".Caption":''</font> |
− | + | .Caption = "Nuovo" | |
− | <FONT color= | + | .Name = "Nuovo" |
− | + | End With | |
− | |||
− | |||
− | mn2 = New Menu(mn, False) | + | With mn2 = New Menu(mn, False) As "mn2" |
− | + | .Caption = "Apri" | |
− | + | .Name = "Apri" | |
− | + | End With | |
− | |||
− | mn3 = New Menu(mn, False) | + | With mn3 = New Menu(mn, False) As "mn3" |
− | + | .Caption = "Salva con nome..." | |
− | + | .Name = "Salva con nome..." | |
− | + | End With | |
− | |||
− | mn4 = New Menu(mn, False) | + | With mn4 = New Menu(mn, False) As "mn4" |
− | + | .Caption = "Esci" | |
− | + | .Name = "Esci" | |
− | + | End With | |
− | + | ||
− | |||
'''End''' | '''End''' | ||
Riga 58: | Riga 50: | ||
'''Public''' Sub mn1_Click() | '''Public''' Sub mn1_Click() | ||
− | + | <FONT color=gray>' ''qui fa qualcosa...''</font> | |
− | + | ||
'''End''' | '''End''' | ||
− | + | ||
'''Public''' Sub mn2_Click() | '''Public''' Sub mn2_Click() | ||
− | + | ||
− | ... | + | <FONT color=gray>' ''qui fa qualcosa...''</font> |
+ | |||
+ | '''End''' | ||
+ | |||
+ | '''Public''' Sub mn3_Click() | ||
+ | |||
+ | <FONT color=gray>' ''qui fa qualcosa...''</font> | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | '''Public''' Sub mn4_Click() | ||
+ | |||
+ | <FONT color=gray>' ''qui fa qualcosa...''</font> | ||
+ | |||
+ | '''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: | |
− | |||
− | |||
− | |||
'''Public''' Sub Form_Open() | '''Public''' Sub Form_Open() | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | <FONT color= | + | Dim mn, subMn As Menu |
+ | Dim i As Integer | ||
+ | Dim testo As String | ||
+ | |||
+ | With mn = New Menu(FMain) | ||
+ | .Caption = "File" | ||
+ | End With | ||
+ | |||
+ | <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 93: | Riga 98: | ||
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> | |
− | + | .Caption = testo | |
− | + | .Name = testo | |
− | + | End With | |
− | + | ||
Next | Next | ||
− | + | ||
'''End''' | '''End''' | ||
− | '''Public''' Sub | + | '''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) | |
'''End''' | '''End''' | ||
− | + | oppure mediante ''Object.Attach()'': | |
− | |||
− | |||
− | |||
− | |||
'''Public''' Sub Form_Open() | '''Public''' Sub Form_Open() | ||
− | Dim mn1 | + | Dim mn, mn1, mn2, mn3, mn4 As Menu |
− | |||
− | |||
− | |||
Dim testo As String | Dim testo As String | ||
− | + | mn = New Menu(Fmain) | |
− | + | mn.Caption = "File" | |
− | + | mn1 = New Menu(mn, False) | |
− | + | With mn1 | |
− | <FONT color= | + | <FONT color=gray>' ''Facciamo mostrare la denominazione della sotto-voce mediante ".Caption":''</font> |
− | + | .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 | |
− | + | <FONT color=#B22222>Object.Attach(mn1, Me, "ev") | |
− | + | Object.Attach(mn2, Me, "ev") | |
− | + | Object.Attach(mn3, Me, "ev") | |
− | + | Object.Attach(mn4, Me, "ev")</font> | |
'''End''' | '''End''' | ||
Riga 165: | Riga 163: | ||
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) | |
'''End''' | '''End''' | ||
+ | o, volendo, sempre mediante ''Object.Attach()'' anche più semplicemente così: | ||
+ | '''Public''' Sub Form_Open() | ||
+ | |||
+ | Dim mn, subMn As Menu | ||
+ | Dim i As Integer | ||
+ | Dim testo As String | ||
+ | |||
+ | With mn = New Menu(FMain) | ||
+ | .Caption = "File" | ||
+ | End With | ||
+ | |||
+ | <FONT color=gray>' ''Per far apparire nel Menu principale le sue sotto-voci con "specifiche" denominazioni:''</font> | ||
+ | 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 | ||
+ | |||
+ | <FONT color=gray>' ''Crea una nuova sotto-voce del Menu principale, e viene assegnata ad un unico Gruppo:''</font> | ||
+ | With subMn = New Menu(mn) | ||
+ | .Caption = testo | ||
+ | .Name = testo | ||
+ | End With | ||
+ | |||
+ | <FONT color=#B22222>Object.Attach(subMn, Me, "SubMn")</font> | ||
+ | |||
+ | Next | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | |||
+ | '''Public''' Sub subMn_Click() | ||
+ | |||
+ | <FONT color=gray>' ''Riscontriamo quale sotto-voce abbiamo scelto:''</font> | ||
+ | Message.Info("Hai premuto il sotto-menu: " & Last.Name) | ||
+ | |||
+ | '''End''' | ||
− | == | + | ==Creare Menu in 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 | ||
+ | |||
+ | |||
+ | <FONT color=gray>' ''Crea un'oggetto "Window":''</font> | ||
+ | With w = New Window | ||
+ | .W = 200 | ||
+ | .H = 200 | ||
+ | .Center | ||
+ | .Show | ||
+ | End With | ||
+ | |||
+ | <FONT color=gray>' ''Crea un Menu attribuendolo all'ggetto "Window":''</font> | ||
+ | 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 | ||
+ | |||
+ | <FONT color=gray>' ''Crea una nuova sotto-voce del Menu principale,'' | ||
+ | ' ''e l'assegna al medesimo Gruppo delle altre sotto-voci:''</font> | ||
+ | With subMn = New Menu(mn) As "SubMn" | ||
+ | .Caption = testo | ||
+ | .Name = testo | ||
+ | End With | ||
+ | |||
+ | Next | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | |||
+ | '''Public''' Sub subMn_Click() | ||
+ | |||
+ | <FONT color=gray>' ''Riscontriamo quale sotto-voce abbiamo scelto:''</font> | ||
+ | Message.Info("Hai premuto il sotto-menu: " & Last.Name) | ||
+ | |||
+ | '''End''' |
Versione delle 10:30, 21 ago 2020
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
Public Sub Form_Open() ' Dichiariamo il Menu principale: Dim mn As Menu ' 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:
Public Sub Form_Open() Dim mn, subMn 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 mediante Object.Attach():
Public Sub Form_Open() Dim mn, mn1, mn2, mn3, 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
o, volendo, sempre mediante Object.Attach() anche più semplicemente così:
Public Sub Form_Open() Dim mn, subMn 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) .Caption = testo .Name = testo End With Object.Attach(subMn, Me, "SubMn") Next End Public Sub subMn_Click() ' Riscontriamo quale sotto-voce abbiamo scelto: Message.Info("Hai premuto il sotto-menu: " & Last.Name) End
Creare Menu in 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