Creare Menu da codice e non con l'Editor-Menu

Da Gambas-it.org - Wikipedia.
Versione del 13 ott 2012 alle 18:44 di Vuott (Discussione | contributi) (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à ...)

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

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


Assegnando un medesimo gruppo alle sotto-voci del Menu:

Private mn As Menu  
 
 
Public Sub Form_Open()  
 
 Dim mn1 As Menu 
 Dim i As Integer  
 
   mn = New Menu(FMain)  
   mn.Caption = "File"

' 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:
   tmp = New Menu(mn1) As "menu1"    
   tmp.Caption = testo  
   tmp.Name = testo  
   tmp.Tag = "tag" & i 
 
 Next    
 
End


Public Sub menu1_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.