Creare Menu popup da codice: differenze tra le versioni

Da Gambas-it.org - Wikipedia.
Vai alla navigazione Vai alla ricerca
Nessun oggetto della modifica
Nessun oggetto della modifica
 
(10 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
Mostreremo un possibile codice 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'':
'''Public''' Sub Form_Menu()  <FONT color=gray>' ''Questo Evento si scatena, se si è cliccato con il tasto destro del mouse.''</font>
 
==Sollevando l'Evento "_Activate()" dei sotto-Menu==
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 hMenu As Menu
  Dim VoceMenu As Menu
  Dim NomiVociMenu As String[] = ["Prima voce", "Seconda voce", "Terza voce", "Quarta voce"]
   
   
   Dim menu1, submenu1, submenu2 As Menu
   hMenu = New Menu(Me)
  Dim j, b As Byte
 
<FONT color=gray>' ''Crea innanzitutto il Menu principale:''</font>
  menu1 = New Menu(Me)
    
    
<FONT color=gray>' ''Poi crea quattro sotto-Menu:''</font>
   For Each nome As String In NomiVociMenu
   For j = 1 To 4
     With VoceMenu = New Menu(hMenu)
     submenu1 = New Menu(menu1)
       .text = nome
<FONT color=gray>' ''Mostra il testo per ciascuno dei quattro sotto-Menu:''</font>
       .Action = .text
    submenu1.Text = "submenu1_" & CStr(j)
     End With
   
<FONT color=gray>' ''Poi crea tre sotto-Menu per ciascun precedente sotto-Menu:''</font>
    For b = 1 To 3
       submenu2 = New Menu(submenu1)
<FONT color=gray>' ''Mostra il testo per ciascuno dei tre sotto-Menu:''</font>
      submenu2.Text = "submenu2_" & 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>
       submenu2.Action = submenu2.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>
  End
  menu1.Popup
   
   
'''End'''
   
   
   
  Public Sub Action<FONT color=red>'''_Activate'''</font>(azione As String) As Boolean
'''Public''' Sub Action_Activate(azione As String) As Boolean
   
   
  <FONT color=gray>' ''Vediamo semplicemente il testo del sotto-Menu cliccato:''</font>
  <FONT color=gray>' ''Vediamo semplicemente il testo del sotto-Menu cliccato:''</font>
  Print azione
  Print azione
   
   
  '''End'''
  End
 


====Creando delle sub-voci alle voci del Menu principale====
Public Sub Form_Menu()
  Dim hMenu As Menu
  Dim VoceMenu, subVoce As Menu
  Dim NomiVociMenu As String[] = ["Prima voce", "Seconda voce", "Terza voce", "Quarta voce"]
  Dim SottoVoci As String[] = ["PrimaSub", "SecondaSub", "TerzaSub", "QuartaSub"]
<FONT color=gray>' ''Crea innanzitutto il Menu principale:''</font>
  hMenu = New Menu(Me)
<FONT color=gray>' ''Poi crea le voci del Menu principale:''</font>
  For Each nome As String In NomiVociMenu
    With VoceMenu = New Menu(hMenu)
      .text = nome
<FONT color=gray>' ''Poi crea le sub-voci per ciascuna voce del menu principale:''</font>
      For Each subnome As String In SottoVoci
        With subVoce = New Menu(VoceMenu)
        .text = subnome
        .Action = .text & " della " & VoceMenu.Text
        End With
      Next
    End With
  Next
  hMenu.Popup
End
Public Sub Action_Activate(azione As String) As Boolean
  Print azione
End




Anziché sollevare l'evento ''Action_Activate()'', si potrà sollevare l'evento "'' _Click()'' " del secondo sub-Menu cliccato. In tal caso il precedente codice viene così modificato:
==Sollevando l'Evento "_Click()" delle voci del Menu==
  '''Public''' Sub Form_Menu()  <FONT color=gray>' ''Questo Evento si scatena, se si è cliccato con il tasto destro del mouse.''</font>
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
<FONT color=gray>' ''Cliccando sul "Form" con il tasto destro del mouse, si aprirà il "PopMenu";''</font>
    <FONT color=red>.PopupMenu</font> = "MenuPrincipale"
  End With
  hMenu = New Menu(Me) As "MenuPrincipale"
   
   
   Dim menu1, submenu1, submenu2 As Menu
   For Each nome As String In NomiVociMenu
  Dim j, b As Byte
     With VociMenu = New Menu(hMenu) As "VociMenu"
 
       .text = nome
<FONT color=gray>' ''Crea innanzitutto il Menu principale:''</font>
     End With
  menu1 = New Menu(Me)
 
<FONT color=gray>' ''Poi crea quattro sotto-Menu:''</font>
  For j = 1 To 4
    submenu1 = New Menu(menu1)
<FONT color=gray>' ''Mostra il testo per ciascuno dei quattro sotto-Menu:''</font>
    submenu1.Text = "submenu1_" & CStr(j)
      
<FONT color=gray>' ''Poi crea tre sotto-Menu per ciascun precedente sotto-Menu:''</font>
    For b = 1 To 3
<FONT color=gray>' ''Con questa seconda modalità è necessario assegnare ogni sotto-Menu ad un unico Gruppo di Eventi:''</font>
      submenu2 = New Menu(submenu1) As "Submenu2"
<FONT color=gray>' ''Mostra il testo per ciascuno dei tre sotto-Menu:''</font>
       submenu2.Text = "submenu2_" & 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>
      submenu2.Action = submenu2.Text
     Next
   Next
   Next
 
<FONT color=gray>' ''Mostra quindi le finestre di ciascun Menu:''</font>
  menu1.Popup
   
   
  '''End'''
  End
   
   
   
   
  '''Public''' Sub Submenu2_Click()
  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 attuale delle 06:34, 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 VoceMenu As Menu
 Dim NomiVociMenu As String[] = ["Prima voce", "Seconda voce", "Terza voce", "Quarta voce"]

 hMenu = New Menu(Me)
 
 For Each nome As String In NomiVociMenu
   With VoceMenu = New Menu(hMenu)
     .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


Creando delle sub-voci alle voci del Menu principale

Public Sub Form_Menu()

 Dim hMenu As Menu
 Dim VoceMenu, subVoce As Menu
 Dim NomiVociMenu As String[] = ["Prima voce", "Seconda voce", "Terza voce", "Quarta voce"]
 Dim SottoVoci As String[] = ["PrimaSub", "SecondaSub", "TerzaSub", "QuartaSub"]

' Crea innanzitutto il Menu principale:
 hMenu = New Menu(Me)

' Poi crea le voci del Menu principale:
 For Each nome As String In NomiVociMenu
   With VoceMenu = New Menu(hMenu) 
     .text = nome
' Poi crea le sub-voci per ciascuna voce del menu principale:
     For Each subnome As String In SottoVoci
       With subVoce = New Menu(VoceMenu)
       .text = subnome
       .Action = .text & " della " & VoceMenu.Text
       End With
     Next
   End With 
 Next

 hMenu.Popup

End


Public Sub Action_Activate(azione As String) As Boolean

 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