Differenze tra le versioni di "Creare Menu da codice e non con l´Editor-Menu"
Riga 19: | Riga 19: | ||
<FONT color=#006400>' ''Impostiamo il Menu principale, impostando come "contenitore" il Form:''</font> | <FONT color=#006400>' ''Impostiamo il Menu principale, impostando come "contenitore" il Form:''</font> | ||
− | 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> | ||
− | + | . Caption = "File" | |
+ | End With | ||
− | <FONT color=#006400>' ''Attribuiamo al Menu principale le sue sotto-voci, | + | <FONT color=#006400>' ''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=#006400>' ''Facciamo mostrare la denominazione della sotto-voce mediante ".Caption":''</font> | <FONT color=#006400>' ''Facciamo mostrare la denominazione della sotto-voce mediante ".Caption":''</font> | ||
.Caption = "Nuovo" | .Caption = "Nuovo" | ||
Riga 34: | Riga 32: | ||
End With | End With | ||
− | + | With mn2 = New Menu(mn, False) As "mn2" | |
− | |||
.Caption = "Apri" | .Caption = "Apri" | ||
.Name = "Apri" | .Name = "Apri" | ||
End With | 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 | End With | ||
− | + | With mn4 = New Menu(mn, False) As "mn4" | |
− | |||
.Caption = "Esci" | .Caption = "Esci" | ||
.Name = "Esci" | .Name = "Esci" | ||
Riga 62: | Riga 57: | ||
'''Public''' Sub mn2_Click() | '''Public''' Sub mn2_Click() | ||
+ | |||
+ | etc etc | ||
+ | ... | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | '''Public''' Sub mn3_Click() | ||
+ | |||
+ | etc etc | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | '''Public''' Sub mn4_Click() | ||
etc etc | etc etc |
Versione delle 05:50, 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. |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à.
Indice
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() etc etc ... End Public Sub mn3_Click() etc etc End Public Sub mn4_Click() etc etc ... 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
Note
[1] Dobbiamo ringraziare gli utenti fsurfing e milio del forum gambas-it.org per i suggerimenti offerti al riguardo.