Differenze tra le versioni di "Creare Menu da codice e non con l'Editor-Menu"
(3 versioni intermedie di uno stesso utente non sono mostrate) | |||
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. | ||
− | <BR>Dovremo, inoltre, collegare un | + | <BR>Dovremo, inoltre, collegare un Evento alle sotto-voci del Menu principale, che venga sollevato, quando clicchiamo su una di quelle sotto-voci del Menu. |
Prendiamo in considerazione alcune modalità. | Prendiamo in considerazione alcune modalità. | ||
Riga 16: | Riga 16: | ||
With mn = New Menu(Me) | With mn = New Menu(Me) | ||
<FONT color=gray>' ''Gli diamo il testo che sarà mostrato:''</font> | <FONT color=gray>' ''Gli diamo il testo che sarà mostrato:''</font> | ||
− | . Caption = "File" | + | .Caption = "File" |
End With | End With | ||
<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 " | + | With mn1 = New Menu(mn, False) As "<FONT color=red>'''Mn1'''</font>" |
<FONT color=gray>' ''Facciamo mostrare la denominazione della sotto-voce mediante la Proprietà ".Caption":''</font> | <FONT color=gray>' ''Facciamo mostrare la denominazione della sotto-voce mediante la Proprietà ".Caption":''</font> | ||
.Caption = "Nuovo" | .Caption = "Nuovo" | ||
Riga 27: | Riga 27: | ||
End With | End With | ||
− | With mn2 = New Menu(mn, False) As " | + | With mn2 = New Menu(mn, False) As "<FONT color=blue>'''Mn2'''</font>" |
.Caption = "Apri" | .Caption = "Apri" | ||
.Name = "Apri" | .Name = "Apri" | ||
End With | End With | ||
− | With mn3 = New Menu(mn, False) As " | + | With mn3 = New Menu(mn, False) As "<FONT color=darkorange>'''Mn3'''</font>" |
.Caption = "Salva con nome..." | .Caption = "Salva con nome..." | ||
.Name = "Salva con nome..." | .Name = "Salva con nome..." | ||
End With | End With | ||
− | With mn4 = New Menu(mn, False) As " | + | With mn4 = New Menu(mn, False) As "<FONT color=darkgreen>'''Mn4'''</font>" |
.Caption = "Esci" | .Caption = "Esci" | ||
.Name = "Esci" | .Name = "Esci" | ||
Riga 45: | Riga 45: | ||
− | Public Sub | + | Public Sub <FONT color=red>'''Mn1'''</font>_Click() |
<FONT color=gray>' ''qui fa qualcosa...''</font> | <FONT color=gray>' ''qui fa qualcosa...''</font> | ||
Riga 52: | Riga 52: | ||
− | Public Sub | + | Public Sub <FONT color=blue>'''Mn2'''</font>_Click() |
<FONT color=gray>' ''qui fa qualcosa...''</font> | <FONT color=gray>' ''qui fa qualcosa...''</font> | ||
Riga 59: | Riga 59: | ||
− | Public Sub | + | Public Sub <FONT color=darkorange>'''Mn3'''</font>_Click() |
<FONT color=gray>' ''qui fa qualcosa...''</font> | <FONT color=gray>' ''qui fa qualcosa...''</font> | ||
Riga 66: | Riga 66: | ||
− | Public Sub | + | Public Sub <FONT color=darkgreen>'''Mn4'''</font>_Click() |
<FONT color=gray>' ''qui fa qualcosa...''</font> | <FONT color=gray>' ''qui fa qualcosa...''</font> |
Versione attuale delle 19:05, 16 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 sotto-voci del Menu.
Prendiamo in considerazione alcune 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 la Proprietà ".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 di Eventi alle sotto-voci del Menu, e per associare ciascuna sotto-voce, in qualità di Oggetto, ad un Evento: [nota 1]
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 di Eventi: With subMn = New Menu(mn) As "SubMenu" .Caption = testo .Name = testo End With Next End Public Sub SubMenu_Click() ' Riscontriamo quale sotto-voce del Menu 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 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() ' 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, "SubMenu") Next End Public Sub SubMenu_Click() ' Riscontriamo quale sotto-voce abbiamo scelto: Message.Info("Hai premuto il sotto-menu: " & Last.Name) End
Usando la Classe "Observer"
Si potrà usare anche la Classe Observer:
Public Sub Form_Open() Dim mn, mn1, mn2, mn3, mn4 As Menu Dim obs As Observer mn = New Menu(Fmain) mn.Caption = "File" With mn1 = New Menu(mn, False) .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 obs = New Observer(mn1) As "Ev" obs = New Observer(mn2) As "Ev" obs = New Observer(mn3) As "Ev" obs = New Observer(mn4) As "Ev" End Public Sub "Ev"_Click() ' Riscontriamo quale sotto-voce abbiamo scelto: Message.Info("Hai premuto il 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
Note
[1] Vedere anche questa pagina: Assegnare da codice più oggetti ad un Gruppo di eventi