Creare Menu popup da codice: differenze tra le versioni

Da Gambas-it.org - Wikipedia.
Vai alla navigazione Vai alla ricerca
(Creata pagina con "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 presen...")
 
Nessun oggetto della modifica
 
(13 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_MouseUp()
 
==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 menu1, submenu1, submenu2 As Menu
   Dim hMenu As Menu
   Dim j, k, b As Byte
  Dim VoceMenu As Menu
   Dim NomiVociMenu As String[] = ["Prima voce", "Seconda voce", "Terza voce", "Quarta voce"]
   
   
  hMenu = New Menu(Me)
    
    
<FONT color=gray>' ''Se dunque si è cliccato con il tasto destro:''</font>
  For Each nome As String In NomiVociMenu
  If Mouse.Right Then
    With VoceMenu = New Menu(hMenu)
      .text = nome
      .Action = .text
    End With
  Next
   
   
  <FONT color=gray>' ''Crea innanzitutto il Menu principale:''</font>
  <FONT color=gray>' ''Cliccando sul "Form" con il tasto destro del mouse, si aprirà il "PopMenu";''</font>
    menu1 = New Menu(Me)
  hMenu<FONT color=red>.Popup</font>
 
End
   
   
<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>
  Public Sub Action<FONT color=red>'''_Activate'''</font>(azione As String) As Boolean
      For k = 1 To 3
        submenu2 = New Menu(submenu1)
        b += 1
<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
<FONT color=gray>' ''Vediamo semplicemente il testo del sotto-Menu cliccato:''</font>
  Print azione
   
   
  <FONT color=gray>' ''Mostra quindi le finestre di ciascun Menu:''</font>
End
    menu1.Popup
 
 
====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)
   
   
  Endif
<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
   
   
'''End'''
  hMenu.Popup
   
   
End
   
   
'''Public''' Sub Action_Activate(azione As String) As Boolean
   
   
  <FONT color=gray>' ''Vediamo semplicemente il testo del sotto-Menu cliccato:''</font>
  Public Sub Action_Activate(azione As String) As Boolean
  Print azione
  Print azione
   
   
  '''End'''
  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_MouseUp()
  Private hMenu As Menu
  Dim menu1, submenu1, submenu2 As Menu
  Dim j, k, b As Byte
 
<FONT color=gray>' ''Se dunque si è cliccato con il tasto destro:''</font>
  If Mouse.Right Then
   
   
<FONT color=gray>' ''Crea innanzitutto il Menu principale:''</font>
    menu1 = New Menu(Me)
   
   
  <FONT color=gray>' ''Poi crea quattro sotto-Menu:''</font>
  Public Sub Form_Open()
    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>
  Dim VociMenu As Menu
      For k = 1 To 3
  Dim NomiVociMenu As String[] = ["Prima voce", "Seconda voce", "Terza voce", "Quarta voce"]
        submenu2 = New Menu(submenu1) As "Submenu2"
        b += 1
<FONT color=gray>' ''Mostra il testo per ciascuno dei tre sotto-Menu:''</font>
        submenu2.Text = "submenu2_" & CStr(b)
      Next
   
   
    Next
  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
   
   
<FONT color=gray>' ''Mostra quindi le finestre di ciascun Menu:''</font>
  hMenu = New Menu(Me) As "MenuPrincipale"
    menu1.Popup
   
   
  Endif
  For Each nome As String In NomiVociMenu
    With VociMenu = New Menu(hMenu) As "VociMenu"
      .text = nome
    End With
  Next
   
   
  '''End'''
  End
   
   
   
   
  '''Public''' Sub Submenu2_Click()
  Public Sub VociMenu<FONT color=red><B>_Click()</b></font>
 
  Print Last.Text
    
    
  <FONT color=gray>' ''Vediamo semplicemente il testo dell'ultimo sotto-Menu cliccato:''</font>
  End
  Print Last.Text
   
'''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