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

Da Gambas-it.org - Wikipedia.
 
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.
+
#REDIRECT [[Creare_Menu_da_codice_e_non_con_l'Editor-Menu]]
 
 
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=gray>' ''Dichiariamo il Menu principale:''</font> 
 
  Dim mn As Menu
 
 
<FONT color=gray>' ''Dichiariamo anche le sotto-voci del Menu:''</font> 
 
  Dim mn1 As Menu 
 
  Dim mn2 As Menu 
 
  Dim mn3 As Menu 
 
  Dim 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 "mn1"
 
<FONT color=gray>' ''Facciamo mostrare la denominazione della sotto-voce mediante ".Caption":''</font>
 
    .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() 
 
 
  <FONT color=gray>' ''qui fa qualcosa...''</font>
 
 
'''End'''
 
 
'''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() 
 
 
  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) <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>
 
  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
 
<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'''
 
 
 
'''Public''' Sub ev_Click()
 
 
  Dim obj As Object = Last
 
 
<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=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 attuale delle 10:31, 21 ago 2020