Differenze tra le versioni di "Creare Menu popup da codice"

Da Gambas-it.org - Wikipedia.
Riga 1: Riga 1:
Mostreremo due possibili modalità, per creare, cliccando con il tasto destro del mouse ad esempio sul ''Form'', un menu ''Popup'' con quattro sotto-menu, ciascuno dei quali presenta ulteriori tre sotto-menu:
+
Mostreremo due possibili modalità, per creare un menu ''Popup'', cliccando con il tasto destro del mouse ad esempio sul ''Form'':
  
 
==Sollevando l'Evento "_Activate()" dei sotto-Menu==
 
==Sollevando l'Evento "_Activate()" dei sotto-Menu==
  Public Sub Form_Menu()  <FONT color=gray>' ''Questo Evento si scatena, se si è cliccato con il tasto destro del mouse.''</font>
+
In questa modalità si userà l'Evento "_Menu()" del ''Form'':
 +
  Public Sub Form<FONT color=green>_Menu</font>()  <FONT color=gray>' ''Questo Evento si scatena, se si è cliccato sul "Form" con il tasto destro del mouse.''</font>
 
   
 
   
   Dim menu1, submenu1livello, submenu2livello As Menu
+
   Dim hMenu As Menu
 +
  Dim VociMenu As Menu
 +
  Dim NomiVociMenu As String[] = ["Prima voce", "Seconda voce", "Terza voce", "Quarta voce"]
 +
 +
  hMenu = New Menu(Me) 'As "MenuPrincipale"
 
    
 
    
<FONT color=gray>' ''Crea innanzitutto il Menu principale:''</font>
+
   For Each nome As String In NomiVociMenu
  menu1 = New Menu(Me)
+
     With VociMenu = New Menu(hMenu) As "VociMenu"
 
+
       .text = nome
<FONT color=gray>' ''Poi crea quattro sotto-Menu (1° livello dei sotto-menu):''</font>
+
       .Action = .text
   For j As Byte = 1 To 4
+
     End With
     submenu1livello = New Menu(menu1)
 
<FONT color=gray>' ''Mostra il testo per ciascuno dei quattro sotto-Menu:''</font>
 
    submenu1livello.Text = "1° livello sotto-Menu" & "_" & CStr(j)
 
   
 
<FONT color=gray>' ''Poi crea tre sotto-Menu (2° livello dei sotto-menu) per ciascun precedente sotto-Menu del 1° livello:''</font>
 
    For b As Byte = 1 To 3
 
       submenu2livello = New Menu(submenu1livello)
 
<FONT color=gray>' ''Mostra il testo per ciascuno dei tre sotto-Menu:''</font>
 
      submenu2livello.Text = submenu1livello.Text & " --> " &
 
                            "2° livello sotto-Menu" & CStr(b)
 
<FONT color=gray>' ''Assegna all'azione, quando si cliccherà su uno dei secondi sotto-Menu, il testo del secondo sotto-Menu medesimo:''</font>
 
       submenu2livello.Action = submenu2livello.Text
 
     Next
 
 
   Next
 
   Next
 +
 +
<FONT color=gray>' ''Cliccando sul "Form" con il tasto destro del mouse, si aprirà il "PopMenu";''</font>
 +
  hMenu<FONT color=red>.Popup</font>
 
    
 
    
<FONT color=gray>' ''Mostra quindi le finestre di ciascun Menu:''</font>
 
  menu1.Popup
 
 
 
  End
 
  End
 
   
 
   
Riga 40: Riga 32:
  
  
==Sollevando l'Evento "_Click()" dei sotto-Menu==
+
==Sollevando l'Evento "_Click()" delle voci del Menu==
Anziché sollevare l'Evento "Action_Activate()", si potrà sollevare l'Evento "_Click()" di un sotto-Menu.
+
Private hMenu As Menu
del secondo sub-Menu cliccato.
 
<BR>Mostriamo un codice, simile al precedente, nel quale viene sollevare l'Evento "'_Click()" el secondo sub-Menu cliccato.
 
Public Sub Form_Menu()  <FONT color=gray>' ''Questo Evento si scatena, se si è cliccato con il tasto destro del mouse.''</font>
 
 
   
 
   
  Dim menu1, submenu1livello, submenu2livello As Menu
 
 
   
 
   
  <FONT color=gray>' ''Crea innanzitutto il Menu principale:''</font>
+
  Public Sub Form_Open()
  menu1 = New Menu(Me)
 
 
   
 
   
<FONT color=gray>' ''Poi crea quattro sotto-Menu (1° livello dei sotto-menu):''</font>
+
  Dim VociMenu As Menu
   For j As Byte = 1 To 4
+
   Dim NomiVociMenu As String[] = ["Prima voce", "Seconda voce", "Terza voce", "Quarta voce"]
     submenu1livello = New Menu(menu1)
+
  <FONT color=gray>' ''Mostra il testo per ciascuno dei quattro sotto-Menu:''</font>
+
  With Me
     submenu1livello.Text = "1° livello sotto-Menu" & "_" & CStr(j)
+
    .H = 512
   
+
     .W = 512
<FONT color=gray>' ''Poi crea tre sotto-Menu (2° livello dei sotto-menu) per ciascun precedente sotto-Menu del 1° livello:''</font>
+
  <FONT color=gray>' ''Cliccando sul "Form" con il tasto destro del mouse, si aprirà il "PopMenu";''</font>
    For b As Byte = 1 To 3
+
     <FONT color=red>.PopupMenu</font> = "MenuPrincipale"
      submenu2livello = New Menu(submenu1livello) As "Submenu2"
+
  End With
  <FONT color=gray>' ''Mostra il testo per ciascuno dei tre sotto-Menu:''</font>
+
      submenu2livello.Text = submenu1livello.Text & " --> " &
+
  hMenu = New Menu(Me) As "MenuPrincipale"
                            "2° livello sotto-Menu" & CStr(b)
+
   
<FONT color=gray>' ''Assegna all'azione, quando si cliccherà su uno dei secondi sotto-Menu, il testo del secondo sotto-Menu medesimo:''</font>
+
  For Each nome As String In NomiVociMenu
       submenu2livello.Action = submenu2livello.Text
+
    With VociMenu = New Menu(hMenu) As "VociMenu"
     Next
+
       .text = nome
 +
     End With
 
   Next
 
   Next
 
 
<FONT color=gray>' ''Mostra quindi le finestre di ciascun Menu:''</font>
 
  menu1.Popup
 
 
   
 
   
 
  End
 
  End
 
   
 
   
 
   
 
   
  Public Sub Submenu2<FONT color=red>'''_Click()'''</font>
+
  Public Sub VociMenu<FONT color=red><B>_Click()</b></font>
 
    
 
    
<FONT color=gray>' ''Vediamo semplicemente il testo dell'ultimo sotto-Menu cliccato:''</font>
 
 
   Print Last.Text
 
   Print Last.Text
   
+
 
 
  End
 
  End

Versione delle 06:04, 28 lug 2024

Mostreremo due possibili modalità, per creare un menu Popup, cliccando con il tasto destro del mouse ad esempio sul Form:

Sollevando l'Evento "_Activate()" dei sotto-Menu

In questa modalità si userà l'Evento "_Menu()" del Form:

Public Sub Form_Menu()   ' Questo Evento si scatena, se si è cliccato sul "Form" con il tasto destro del mouse.

 Dim hMenu As Menu
 Dim VociMenu As Menu
 Dim NomiVociMenu As String[] = ["Prima voce", "Seconda voce", "Terza voce", "Quarta voce"]

 hMenu = New Menu(Me) 'As "MenuPrincipale"
 
 For Each nome As String In NomiVociMenu
   With VociMenu = New Menu(hMenu) As "VociMenu"
     .text = nome
     .Action = .text
   End With 
 Next

' Cliccando sul "Form" con il tasto destro del mouse, si aprirà il "PopMenu";
 hMenu.Popup
 
End


Public Sub Action_Activate(azione As String) As Boolean

' Vediamo semplicemente il testo del sotto-Menu cliccato:
 Print azione

End


Sollevando l'Evento "_Click()" delle voci del Menu

Private hMenu As Menu


Public Sub Form_Open()

 Dim VociMenu As Menu
 Dim NomiVociMenu As String[] = ["Prima voce", "Seconda voce", "Terza voce", "Quarta voce"]

 With Me
   .H = 512
   .W = 512
' Cliccando sul "Form" con il tasto destro del mouse, si aprirà il "PopMenu";
   .PopupMenu = "MenuPrincipale"
 End With

 hMenu = New Menu(Me) As "MenuPrincipale"

 For Each nome As String In NomiVociMenu
   With VociMenu = New Menu(hMenu) As "VociMenu"
     .text = nome
   End With
 Next

End


Public Sub VociMenu_Click()
 
 Print Last.Text
 
End