Differenze tra le versioni di "Creare Menu da codice e non con l'Editor-Menu"
Riga 1: | Riga 1: | ||
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. | 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 | + | Dovremo, inoltre, collegare un evento alle sotto-voci del Menu principale, che venga sollevato quando clicchiamo su una di quelle. |
Prendiamo in considerazione tre modalità. | Prendiamo in considerazione tre modalità. | ||
==Creando una routine-evento per ciascuna sotto-voce del Menu== | ==Creando una routine-evento per ciascuna sotto-voce del Menu== | ||
− | + | Public Sub Form_Open() | |
<FONT color=gray>' ''Dichiariamo il Menu principale:''</font> | <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=gray>' ''Dichiariamo anche le sotto-voci del Menu:''</font> | ||
− | + | Dim mn1, mn2, mn3, mn4 As Menu | |
<FONT color=gray>' ''Impostiamo il Menu principale, impostando come "contenitore" il Form:''</font> | <FONT color=gray>' ''Impostiamo il Menu principale, impostando come "contenitore" il Form:''</font> | ||
Riga 22: | Riga 22: | ||
<FONT color=gray>' ''Attribuiamo al Menu principale le sue sotto-voci, le quali attribuiamo ad un proprio Gruppo.'' | <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" | |
<FONT color=gray>' ''Facciamo mostrare la denominazione della sotto-voce mediante ".Caption":''</font> | <FONT color=gray>' ''Facciamo mostrare la denominazione della sotto-voce mediante ".Caption":''</font> | ||
.Caption = "Nuovo" | .Caption = "Nuovo" | ||
.Name = "Nuovo" | .Name = "Nuovo" | ||
− | + | End With | |
− | + | With mn2 = New Menu(mn, False) As "mn2" | |
.Caption = "Apri" | .Caption = "Apri" | ||
.Name = "Apri" | .Name = "Apri" | ||
− | + | End With | |
− | + | With mn3 = New Menu(mn, False) As "mn3" | |
.Caption = "Salva con nome..." | .Caption = "Salva con nome..." | ||
.Name = "Salva con nome..." | .Name = "Salva con nome..." | ||
− | + | End With | |
− | + | With mn4 = New Menu(mn, False) As "mn4" | |
.Caption = "Esci" | .Caption = "Esci" | ||
.Name = "Esci" | .Name = "Esci" | ||
− | + | End With | |
− | + | End | |
− | + | Public Sub mn1_Click() | |
<FONT color=gray>' ''qui fa qualcosa...''</font> | <FONT color=gray>' ''qui fa qualcosa...''</font> | ||
− | + | End | |
+ | |||
− | + | Public Sub mn2_Click() | |
<FONT color=gray>' ''qui fa qualcosa...''</font> | <FONT color=gray>' ''qui fa qualcosa...''</font> | ||
− | + | End | |
− | + | ||
+ | Public Sub mn3_Click() | ||
<FONT color=gray>' ''qui fa qualcosa...''</font> | <FONT color=gray>' ''qui fa qualcosa...''</font> | ||
− | + | End | |
− | + | ||
+ | Public Sub mn4_Click() | ||
<FONT color=gray>' ''qui fa qualcosa...''</font> | <FONT color=gray>' ''qui fa qualcosa...''</font> | ||
− | + | End | |
==Assegnando un medesimo Gruppo alle sotto-voci del Menu== | ==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 | + | 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) | With mn = New Menu(FMain) | ||
Riga 84: | Riga 87: | ||
<FONT color=gray>' ''Per far apparire nel Menu principale le sue sotto-voci con "specifiche" denominazioni:''</font> | <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> | <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 | |
− | |||
− | + | End | |
− | + | Public Sub subMn_Click() | |
<FONT color=gray>' ''Riscontriamo quale sotto-voce abbiamo scelto:''</font> | <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 | |
− | + | ===Usando il Metodo "Object.Attach()"=== | |
'''Public''' Sub Form_Open() | '''Public''' Sub Form_Open() | ||
− | + | Dim mn, mn1, mn2, mn3, mn4 As Menu | |
− | + | Dim testo As String | |
mn = New Menu(Fmain) | mn = New Menu(Fmain) | ||
mn.Caption = "File" | mn.Caption = "File" | ||
− | mn1 = New Menu(mn, False) | + | With mn1 = New Menu(mn, False) |
− | |||
<FONT color=gray>' ''Facciamo mostrare la denominazione della sotto-voce mediante ".Caption":''</font> | <FONT color=gray>' ''Facciamo mostrare la denominazione della sotto-voce mediante ".Caption":''</font> | ||
.Caption = "Nuovo" | .Caption = "Nuovo" | ||
.Name = "Nuovo" | .Name = "Nuovo" | ||
− | + | End With | |
− | mn2 = New Menu(mn, False) | + | With mn2 = New Menu(mn, False) |
− | |||
.Caption = "Apri" | .Caption = "Apri" | ||
.Name = "Apri" | .Name = "Apri" | ||
− | + | End With | |
− | mn3 = New Menu(mn, False) | + | With mn3 = New Menu(mn, False) |
− | |||
.Caption = "Salva con nome..." | .Caption = "Salva con nome..." | ||
.Name = "Salva con nome..." | .Name = "Salva con nome..." | ||
− | + | End With | |
− | mn4 = New Menu(mn, False) | + | With mn4 = New Menu(mn, False) |
− | |||
.Caption = "Esci" | .Caption = "Esci" | ||
.Name = "Esci" | .Name = "Esci" | ||
− | + | End With | |
− | <FONT color= | + | <FONT color=red><B>Object.Attach</b>(mn1, Me, "ev") |
Object.Attach(mn2, Me, "ev") | Object.Attach(mn2, Me, "ev") | ||
Object.Attach(mn3, Me, "ev") | Object.Attach(mn3, Me, "ev") | ||
Object.Attach(mn4, Me, "ev")</font> | Object.Attach(mn4, Me, "ev")</font> | ||
− | + | End | |
− | + | Public Sub ev_Click() | |
− | + | Dim obj As Object = Last | |
<FONT color=gray>' ''Riscontriamo quale sotto-voce abbiamo scelto:''</font> | <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) | ||
− | + | End | |
− | + | o, volendo, sempre mediante "Object.Attach()" anche più semplicemente così: | |
− | o, volendo, sempre mediante | + | Public Sub Form_Open() |
− | |||
− | + | Dim mn, subMn As Menu | |
− | + | Dim i As Integer | |
− | + | Dim testo As String | |
With mn = New Menu(FMain) | With mn = New Menu(FMain) | ||
Riga 196: | Riga 192: | ||
End With | End With | ||
− | <FONT color= | + | <FONT color=red>'''Object.Attach'''(subMn, Me, "SubMn")</font> |
Next | Next | ||
− | + | End | |
− | + | Public Sub subMn_Click() | |
<FONT color=gray>' ''Riscontriamo quale sotto-voce abbiamo scelto:''</font> | <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 | |
− | ==Creare Menu in un | + | ==Creare Menu in un Oggetto di tipo ''Window''== |
− | E' possibile creare Menu anche per l' | + | E' possibile creare Menu anche per l'Oggetto della Classe ''Window''. |
Come esempio riprendiamo in parte, ed opportunamente modificato, uno dei codici sopra descritti: | 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> | <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> | <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> | <FONT color=gray>' ''Riscontriamo quale sotto-voce abbiamo scelto:''</font> | ||
− | + | Message.Info("Hai premuto il sotto-menu: " & Last.Name) | |
− | + | End |
Versione delle 07:50, 13 lug 2024
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 sollevato quando clicchiamo su una di quelle.
Prendiamo in considerazione tre modalità.
Indice
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, mn2, mn3, 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
Usando il Metodo "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" With mn1 = New Menu(mn, False) ' Facciamo mostrare la denominazione della sotto-voce mediante ".Caption": .Caption = "Nuovo" .Name = "Nuovo" End With With mn2 = New Menu(mn, False) .Caption = "Apri" .Name = "Apri" End With With mn3 = New Menu(mn, False) .Caption = "Salva con nome..." .Name = "Salva con nome..." End With With mn4 = New Menu(mn, False) .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 di tipo Window
E' possibile creare Menu anche per l'Oggetto della Classe 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