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

Da Gambas-it.org - Wikipedia.
 
(8 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]]|
+
#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==
 
<FONT color=#006400>' ''Dichiariamo il Menu principale:''</font> 
 
'''Private''' mn As Menu
 
         
 
   
 
'''Public''' Sub Form_Open() 
 
 
<FONT color=#006400>' ''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=#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)
 
    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
 
   
 
'''End'''
 
 
 
'''Public''' Sub mn1_Click() 
 
 
  <FONT color=#006400>' ''qui fa qualcosa...''</font>
 
 
'''End'''
 
 
'''Public''' Sub mn2_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
 
 
<FONT color=#006400>' ''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=#006400>' ''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=#006400>' ''Riscontriamo quale sotto-voce abbiamo scelto:''</font>
 
  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
 
<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)
 
    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
 
 
<FONT color=#006400>' ''Riscontriamo quale sotto-voce abbiamo scelto:''</font>
 
  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
 
 
 
 
 
<FONT color=#006400>' ''Crea un'oggetto "Window":''</font>
 
  With w = New Window
 
    .W = 200
 
    .H = 200
 
    .Center
 
    .Show
 
  End With
 
 
 
<FONT color=#006400>' ''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=#006400>' ''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=#006400>' ''Riscontriamo quale sotto-voce abbiamo scelto:''</font>
 
  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.
 

Versione attuale delle 10:31, 21 ago 2020