Differenze tra le versioni di "Creare Menu da codice e non con l'Editor-Menu"

Da Gambas-it.org - Wikipedia.
(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à ...)
 
 
(16 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.{[[#Note|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.
 +
<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.
  
Dovremo, inoltre, collegare un evento alle sotto-voci del Menu principale, che venga solleato quando clicchiamo su una di quelle.
+
Prendiamo in considerazione alcune modalità.
<BR>Prendiamo in considerazione tre modalità.
 
  
 +
==Creando una routine-evento per ciascuna sotto-voce del Menu==
 +
Public Sub Form_Open()
 +
 +
<FONT color=gray>' ''Dichiariamo il Menu principale:''</font> 
 +
  Dim mn As Menu
 +
 +
<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>
 +
  With mn = New Menu(Me)
 +
<FONT color=gray>' ''Gli diamo il testo che sarà mostrato:''</font>
 +
    .Caption = "File"
 +
  End With
 +
   
 +
<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 "<FONT color=red>'''Mn1'''</font>"
 +
<FONT color=gray>' ''Facciamo mostrare la denominazione della sotto-voce mediante la Proprietà ".Caption":''</font>
 +
    .Caption = "Nuovo"
 +
    .Name = "Nuovo"
 +
  End With
 +
 +
  With mn2 = New Menu(mn, False) As "<FONT color=blue>'''Mn2'''</font>"
 +
    .Caption = "Apri"
 +
    .Name = "Apri"
 +
  End With
 +
 +
  With mn3 = New Menu(mn, False) As "<FONT color=darkorange>'''Mn3'''</font>"
 +
    .Caption = "Salva con nome..."
 +
    .Name = "Salva con nome..."
 +
  End With
 +
 +
  With mn4 = New Menu(mn, False) As "<FONT color=darkgreen>'''Mn4'''</font>"
 +
    .Caption = "Esci"
 +
    .Name = "Esci"
 +
  End With
 +
   
 +
End
 +
 +
 +
Public Sub <FONT color=red>'''Mn1'''</font>_Click() 
 +
 +
  <FONT color=gray>' ''qui fa qualcosa...''</font>
 +
 +
End
 +
 +
 +
Public Sub <FONT color=blue>'''Mn2'''</font>_Click() 
 +
 +
  <FONT color=gray>' ''qui fa qualcosa...''</font>
 +
 +
End
 +
 +
 +
Public Sub <FONT color=darkorange>'''Mn3'''</font>_Click() 
 +
 +
  <FONT color=gray>' ''qui fa qualcosa...''</font>
 +
 +
End
 +
 +
 +
Public Sub <FONT color=darkgreen>'''Mn4'''</font>_Click() 
 +
 +
  <FONT color=gray>' ''qui fa qualcosa...''</font>
 +
 +
End
  
<FONT color=#B22222><B>Creando una routine-evento per ciascuna sotto-voce del Menu:</b></font>
 
  
  <FONT color=#006400>' ''Dichiariamo il Menu principale:''</font>
+
==Assegnando un medesimo Gruppo alle sotto-voci del Menu==
  Private mn As 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: <SUP>&#091;[[#Note|nota 1]]&#093;</sup>
         
+
  Public Sub Form_Open()   
     
+
'''Public''' Sub Form_Open()   
+
   Dim mn, subMn As Menu  
 
+
  Dim i As Integer
<FONT color=#006400>' ''Dichiariamo anche le sotto-voci del Menu:''</font>    
+
  Dim testo As String
  Dim mn1 As Menu
+
   
  Dim mn2 As Menu 
+
  With mn = New Menu(FMain)   
  Dim mn3 As Menu 
+
    .Caption = "File"
  Dim mn4 As Menu  
+
  End With
     
 
<FONT color=#006400>' ''impostiamo il Menu principale, impostando come "contenitore" il Form:</font>
 
    mn = New Menu(Me)   
 
     
 
<FONT color=#006400>' ''gli diamo il testo che sarà mostrato:''</font>
 
    mn.Caption = "File"
 
     
 
<FONT color=#006400>' ''attribuiamo al Menu principale le sue sotto-voci,''
 
' ''alle quali diamo il testo che sarà mostrato,''
 
' ''e come "contenitore" il Menu principale:''</font>
 
    mn1 = New Menu(mn, False)
 
    With mn1
 
<FONT color=#006400>' ''Facciamo mostrare la denominazione della sotto-voce mediante ".Caption":</font>
 
      .Caption = "Nuovo"
 
      .Name = "Nuovo"
 
    End With
 
 
   
 
   
    mn2 = New Menu(mn, False)
+
<FONT color=gray>' ''Per far apparire nel Menu principale le sue sotto-voci con "specifiche" denominazioni:''</font>
     With mn2
+
  For i = 0 To 3 
       .Caption = "Apri"
+
     Select Case i 
       .Name = "Apri"
+
      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 di Eventi:''</font>
 +
    With subMn = New Menu(mn) <FONT color=red>'''As "SubMenu"'''</font>
 +
      .Caption = testo
 +
      .Name = testo 
 
     End With
 
     End With
 +
  Next
 
   
 
   
    mn3 = New Menu(mn, False)
+
End
    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
 
     
 
'''End'''
 
 
   
 
   
 +
Public Sub <FONT color=red>'''SubMenu'''</font>_Click() 
 
   
 
   
  '''Public''' Sub mn1_Click()
+
  <FONT color=gray>' ''Riscontriamo quale sotto-voce del Menu abbiamo scelto:''</font>
 +
  Message.Info("Hai premuto il sotto-menu: " & Last.Name)
 
   
 
   
    <FONT color=#006400>' ''qui fa qualcosa...''</font>
+
  End
 
 
  '''End'''
 
 
 
'''Public''' Sub mn2_Click() 
 
  etc etc 
 
... 
 
  
  
<FONT color=#B22222><B>Assegnando un medesimo ''gruppo'' alle sotto-voci del Menu:</b></font>
+
===Usando il Metodo "Object.Attach()"===
 
+
Public Sub Form_Open()
  Private mn As Menu  
+
 
+
  Dim mn, mn1, mn2, mn3, mn4 As Menu
 
+
  '''Public''' Sub Form_Open()   
+
  mn = New Menu(Fmain)
 
+
  mn.Caption = "File"
  Dim mn1 As Menu  
+
  Dim i As Integer   
+
  With mn1 = New Menu(mn, False)
 
+
<FONT color=gray>' ''Facciamo mostrare la denominazione della sotto-voce mediante ".Caption":''</font>
    mn = New Menu(FMain)   
+
    .Caption = "Nuovo"
    mn.Caption = "File"
+
    .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
 +
 +
  <FONT color=red><B>Object.Attach</b></font>(mn1, Me, "<FONT color=blue>Ev'''</font>")
 +
  <FONT color=red><B>Object.Attach</b></font>(mn2, Me, "<FONT color=blue>Ev'''</font>")
 +
  <FONT color=red><B>Object.Attach</b></font>(mn3, Me, "<FONT color=blue>Ev'''</font>")
 +
  <FONT color=red><B>Object.Attach</b></font>(mn4, Me, "<FONT color=blue>Ev'''</font>")
 +
   
 +
  End
 +
 +
 +
  Public Sub <FONT color=blue>'''Ev'''</font>_Click()
 +
 +
<FONT color=gray>' ''Riscontriamo quale sotto-voce abbiamo scelto:''</font>
 +
  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
 
   
 
   
  <FONT color=#006400>' ''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   
 
   For i = 0 To 3   
 
     Select Case i   
 
     Select Case i   
Riga 93: Riga 182:
 
     End Select   
 
     End Select   
 
   
 
   
  <FONT color=#006400>' ''crea una nuova sotto-voce del Menu principale:''</font>
+
  <FONT color=gray>' ''Crea una nuova sotto-voce del Menu principale, e viene assegnata ad un unico Gruppo:''</font>
     tmp = New Menu(mn1) As "menu1"   
+
     With subMn = New Menu(mn)
    tmp.Caption = testo
+
      .Caption = testo
    tmp.Name = testo   
+
      .Name = testo   
     tmp.Tag = "tag" & i
+
     End With
 
+
 +
    <FONT color=red>'''Object.Attach'''</font>(subMn, Me, "<FONT color=blue>SubMenu</font>")
 +
 
   Next     
 
   Next     
 
+
  '''End'''
+
  End
 
   
 
   
 
   
 
   
  '''Public''' Sub menu1_Click()   
+
  Public Sub <FONT color=blue>SubMenu</font>_Click()   
 
   
 
   
  <FONT color=#006400>' ''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'''
+
  End
  
  
<FONT color=#B22222><B>Associando ciascuna sotto-voce, in qualità di ''oggetto'', ad un evento:</b></font>
+
===Usando la Classe "Observer"===
 
+
Si potrà usare anche la Classe ''Observer'':
'''Private''' mn As Menu   
+
Public Sub Form_Open()
 +
 +
  Dim mn, mn1, mn2, mn3, mn4 As Menu
 +
  Dim obs As <FONT color=red>Observer</font>
 +
 +
  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
 
   
 
   
'''Public''' Sub Form_Open()
+
  With mn3 = New Menu(mn, False)
 +
    .Caption = "Salva con nome..."
 +
    .Name = "Salva con nome..."
 +
  End With
 
   
 
   
  Dim mn1 As Menu
+
  With mn4 = New Menu(mn, False)
  Dim mn2 As Menu
+
    .Caption = "Esci"
  Dim mn3 As Menu
+
    .Name = "Esci"
  Dim mn4 As Menu
+
  End With
  Dim testo As String
 
 
   
 
   
    mn = New Menu(Fmain)
+
  obs = New <FONT color=red><B>Observer</b></font>(mn1) As "<FONT color=blue>Ev</font>"
    mn.Caption = "File"
+
  obs = New <FONT color=red><B>Observer</b></font>(mn2) As "<FONT color=blue>Ev</font>"
 +
  obs = New <FONT color=red><B>Observer</b></font>(mn3) As "<FONT color=blue>Ev</font>"
 +
  obs = New <FONT color=red><B>Observer</b></font>(mn4) As "<FONT color=blue>Ev</font>"
 
   
 
   
    mn1 = New Menu(mn, False)
+
  End
    With mn1
 
  <FONT color=#006400>' ''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)
+
Public Sub "<FONT color=blue>Ev</font>"_Click()
    With mn3
 
      .Caption = "Salva con nome..."
 
      .Name = "Salva con nome..."
 
    End With
 
 
   
 
   
    mn4 = New Menu(mn, False)
+
<FONT color=gray>' ''Riscontriamo quale sotto-voce abbiamo scelto:''</font>
    With mn4
+
  Message.Info("Hai premuto il menu: " & Last.Name)
      .Caption = "Esci"
 
      .Name = "Esci"
 
    End With
 
 
   
 
   
    Object.Attach(mn1, Me, "ev")
+
End
    Object.Attach(mn2, Me, "ev")
+
 
    Object.Attach(mn3, Me, "ev")
+
 
    Object.Attach(mn4, Me, "ev")
+
==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()
 
   
 
   
  '''End'''
+
  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 ev_Click()
 
 
   
 
   
  Dim obj As Object = Last
+
Public Sub subMn_Click() 
 
   
 
   
  <FONT color=#006400>' ''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 sotto-menu: " & Last.Name)
 
   
 
   
  '''End'''
+
  End
  
  
  
==Note==
+
=Note=
[1] Dobbiamo ringraziare gli utenti ''fsurfing'' e ''milio'' del forum ''gambas-it.org'' per i suggerimenti offerti al riguardo.
+
[1] Vedere anche questa pagina: [[Assegnare da codice più oggetti ad un Gruppo di eventi]]

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à.

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