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

Da Gambas-it.org - Wikipedia.
Riga 6: Riga 6:
  
 
==Creando una routine-evento per ciascuna sotto-voce del Menu==
 
==Creando una routine-evento per ciascuna sotto-voce del Menu==
 +
'''Public''' Sub Form_Open()
 +
 
  <FONT color=gray>' ''Dichiariamo il Menu principale:''</font>   
 
  <FONT color=gray>' ''Dichiariamo il Menu principale:''</font>   
'''Private''' mn As Menu
+
  Dim mn As Menu
         
 
   
 
'''Public''' Sub Form_Open() 
 
 
   
 
   
 
  <FONT color=gray>' ''Dichiariamo anche le sotto-voci del Menu:''</font>   
 
  <FONT color=gray>' ''Dichiariamo anche le sotto-voci del Menu:''</font>   
Riga 20: Riga 19:
 
  <FONT color=gray>' ''Impostiamo il Menu principale, impostando come "contenitore" il Form:''</font>
 
  <FONT color=gray>' ''Impostiamo il Menu principale, impostando come "contenitore" il Form:''</font>
 
   With mn = New Menu(Me)
 
   With mn = New Menu(Me)
  <FONT color=#006400>' ''Gli diamo il testo che sarà mostrato:''</font>
+
  <FONT color=gray>' ''Gli diamo il testo che sarà mostrato:''</font>
 
     . Caption = "File"
 
     . Caption = "File"
 
   End With  
 
   End With  
Riga 77: Riga 76:
 
==Assegnando un medesimo Gruppo alle sotto-voci del Menu==
 
==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:
 
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()   
 
  '''Public''' Sub Form_Open()   
 
   
 
   
   Dim mn As Menu  
+
   Dim mn, subMn As Menu  
 
   Dim i As Integer
 
   Dim i As Integer
 
   Dim testo As String  
 
   Dim testo As String  
Riga 122: Riga 117:
 
  '''End'''
 
  '''End'''
  
oppure:
+
 
'''Private''' mn As Menu 
+
oppure, assegnando i sotto-menu ad un unico Gruppo mediante ''Object.Attach()'':
 
 
 
  '''Public''' Sub Form_Open()
 
  '''Public''' Sub Form_Open()
 
   
 
   
   Dim mn1 As Menu
+
   Dim mn, mn1, mn2, mn3, mn4 As Menu
  Dim mn2 As Menu
 
  Dim mn3 As Menu
 
  Dim mn4 As Menu
 
 
   Dim testo As String
 
   Dim testo As String
 
   
 
   

Versione delle 07:59, 19 ago 2014

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 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()

' Dichiariamo il Menu principale:  
 Dim mn As Menu

' 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:
  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 ".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 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

' 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  
   End With 

 Next    

End


Public Sub subMn_Click()  

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

End


oppure, assegnando i sotto-menu ad un unico Gruppo 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
' 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


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