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

Da Gambas-it.org - Wikipedia.
Riga 97: Riga 97:
 
     End Select   
 
     End Select   
 
   
 
   
  <FONT color=#006400>' ''Crea una nuova sotto-voce del Menu principale:''</font>
+
  <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>
 
     With subMn = New Menu(mn) <FONT color=#B22222>As "SubMn"</font>
 
       .Caption = testo
 
       .Caption = testo

Versione delle 16:53, 11 mag 2013

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


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:
  mn = New Menu(Me)  
    
' Gli diamo il testo che sarà mostrato:
  mn.Caption = "File"  
    
' Attribuiamo al Menu principale le sue sotto-voci,
' alle quali diamo il testo che sarà mostrato,
' e come "contenitore" il Menu principale:
   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
    
End


Public Sub mn1_Click()  

  ' qui fa qualcosa...

End

Public Sub mn2_Click()  

  etc etc  
...

End


Assegnando un medesimo gruppo alle sotto-voci del Menu

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  
     .Tag = "tag" & i
   End With 

 Next    

End


Public Sub subMn_Click()  

' Riscontriamo quale sotto-voce abbiamo scelto:
  Message.Info("Hai premuto il sotto-menu " & Last.Name)

End


Associando ciascuna sotto-voce, in qualità di oggetto, ad un evento

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


Note

[1] Dobbiamo ringraziare gli utenti fsurfing e milio del forum gambas-it.org per i suggerimenti offerti al riguardo.