Differenze tra le versioni di "Evitare che appaia il popmenu quando si clicca al di fuori di un elemento di una ListView"

Da Gambas-it.org - Wikipedia.
(Creata pagina con "Per far sì che non appaia il popmenu, quando si clicca con il mouse al di fuori di un elemento della lista di una ''ListView'', si può adottare un codice come il seguente:...")
 
 
(4 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
Per far sì che non appaia il popmenu, quando si clicca con il mouse al di fuori di un elemento della lista di una ''ListView'', si può adottare un codice come il seguente:
+
Per far sì che non appaia il menu ''popup'', quando si clicca con il tasto destro del mouse al di fuori di un elemento della lista di una ''ListView'', si può adottare un codice quello appresso. <SUP>&#091;[[#Note|Note 1]]&#093;</sup>
 +
 
 +
Va precisato che il seguente codice prevede, qualora invece si clicchi con il tasto destro del mouse su un elemento della lista della ''ListView'', che il menu ''popup'' venga creato via codice.
 
  '''Public''' Sub Form_Open()
 
  '''Public''' Sub Form_Open()
 
    
 
    
Riga 17: Riga 19:
 
    
 
    
 
  <FONT Color=gray>' ''Se è stato cliccato all'interno dell'oggetto "ListView" con il tasto destro del mouse...''</font>
 
  <FONT Color=gray>' ''Se è stato cliccato all'interno dell'oggetto "ListView" con il tasto destro del mouse...''</font>
  If Mouse.Right Then
+
  If Mouse.Right Then
 
  <FONT Color=gray>' ''...allora verifica se alle coordinate ove si è cliccato esiste un item valido dell'oggetto "ListView":''</font>
 
  <FONT Color=gray>' ''...allora verifica se alle coordinate ove si è cliccato esiste un item valido dell'oggetto "ListView":''</font>
    If ListView1.FindAt(Mouse.X, Mouse.Y) Then Return
+
    If ListView1.FindAt(Mouse.X, Mouse.Y) Then Return
 
  <FONT Color=gray>' ''Crea innanzitutto il Menu principale:''</font>
 
  <FONT Color=gray>' ''Crea innanzitutto il Menu principale:''</font>
      menu1 = New Menu(Me)
+
      menu1 = New Menu(Me)
 
        
 
        
 
  <FONT Color=gray>' ''Poi crea quattro sotto-Menu:''</font>
 
  <FONT Color=gray>' ''Poi crea quattro sotto-Menu:''</font>
      For j = 1 To 4
+
      For j = 1 To 4
        submenu1 = New Menu(menu1)
+
        submenu1 = New Menu(menu1)
 
  <FONT Color=gray>' ''Mostra il testo per ciascuno dei quattro sotto-Menu:''</font>
 
  <FONT Color=gray>' ''Mostra il testo per ciascuno dei quattro sotto-Menu:''</font>
        submenu1.Text = "submenu1_" & CStr(j)
+
        submenu1.Text = "submenu1_" & CStr(j)
 
          
 
          
 
  <FONT Color=gray>' ''Poi crea tre sotto-Menu per ciascun precedente sotto-Menu:''</font>
 
  <FONT Color=gray>' ''Poi crea tre sotto-Menu per ciascun precedente sotto-Menu:''</font>
        For k = 1 To 3
+
        For k = 1 To 3
          submenu2 = New Menu(submenu1)
+
          submenu2 = New Menu(submenu1)
          b += 1
+
          b += 1
 
  <FONT Color=gray>' ''Mostra il testo per ciascuno dei tre sotto-Menu:''</font>
 
  <FONT Color=gray>' ''Mostra il testo per ciascuno dei tre sotto-Menu:''</font>
          submenu2.Text = "submenu2_" & CStr(b)
+
          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>
 
  <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
+
          submenu2.Action = submenu2.Text
        Next
+
        Next
      Next
+
      Next
 
        
 
        
 
  <FONT Color=gray>' ''Mostra quindi le finestre di ciascun Menu:''</font>
 
  <FONT Color=gray>' ''Mostra quindi le finestre di ciascun Menu:''</font>
      menu1.Popup
+
      menu1.Popup
 
    
 
    
  Endif
+
  Endif
 
    
 
    
 
  '''End'''
 
  '''End'''
 
 
   
 
   
 
  '''Public''' Sub Action_Activate(azione As String) As Boolean
 
  '''Public''' Sub Action_Activate(azione As String) As Boolean
Riga 55: Riga 56:
 
  '''End'''
 
  '''End'''
  
 +
 +
Qualora invece il menu ''popup'' sia stato già creato mediante l'Editor Menu dell'IDE di Gambas <SUP>&#091;[[#Note|Note 2]]&#093;</sup>
 +
, si potrà adottare il seguente codice:
 +
'''Public''' Sub Form_Open()
 +
 
 +
  With ListView1
 +
    .Add("chiave0", "aaaaa")
 +
    .Add("chiave1", "bbbbb")
 +
    .Add("chiave2", "ccccc")
 +
  End With
 +
 
 +
'''End'''
 +
 +
'''Public''' Sub ListView1_MouseDown()
 +
 
 +
  ListView1.PopupMenu = Null
 +
  If ListView1.FindAt(Mouse.X, Mouse.Y) Then Return
 +
  ListView1.PopupMenu = "mnuPopup"
 +
 
 +
'''End'''
 +
 +
'''Public''' Sub Action_Activate(sKey As String) As Boolean
 +
 
 +
  Select Case sKey
 +
    Case "popup-taglia"
 +
      PopupTaglia()
 +
    Case "popup-copia"
 +
      PopupCopia()
 +
    Case "popup-incolla"
 +
      PopupIncolla()
 +
  End Select
 +
 
 +
'''End'''
 +
 +
'''Private''' Sub PopupTaglia()
 +
 +
  Clipboard.Current = 0
 +
 
 +
  Clipboard.Copy(ListView1.Current.Text)
 +
 
 +
  ListView1.Current.Text = Null
 +
 
 +
'''End'''
 +
 +
 +
'''Private''' Sub PopupCopia()
 +
 
 +
  Clipboard.Current = 0
 +
 
 +
  If ListView1.Current.Text Then Clipboard.Copy(ListView1.Current.Text)
 +
 
 +
'''End'''
 +
 +
 +
'''Private''' Sub PopupIncolla()
 +
 
 +
  Clipboard.Current = 0
 +
 
 +
  ListView1.Current.Text = Clipboard.Paste()
 +
 
 +
'''End'''
  
  
Riga 60: Riga 122:
 
=Note=
 
=Note=
 
[1] Vedi anche: [[Creare_Menu_a_finestra|Creare Menu a finestra]]
 
[1] Vedi anche: [[Creare_Menu_a_finestra|Creare Menu a finestra]]
 +
 +
[2] Vedi questa pagina della Wiki: [http://www.gambas-it.org/wiki/index.php?title=Creare_Menu_popup_utilizzando_l%E2%80%99editor_di_menu Creare Menu popup utilizzando l’editor di menu]

Versione attuale delle 09:58, 15 gen 2022

Per far sì che non appaia il menu popup, quando si clicca con il tasto destro del mouse al di fuori di un elemento della lista di una ListView, si può adottare un codice quello appresso. [Note 1]

Va precisato che il seguente codice prevede, qualora invece si clicchi con il tasto destro del mouse su un elemento della lista della ListView, che il menu popup venga creato via codice.

Public Sub Form_Open()
 
 With ListView1
   .Add("chiave_A", "aaaaa")
   .Add("chiave_B", "bbbbb")
   .Add("chiave_C", "ccccc")
 End With
  
End


Public Sub ListView1_MouseUp()
 
 Dim menu1, submenu1, submenu2 As Menu
 Dim j, k, b As Byte
  
' Se è stato cliccato all'interno dell'oggetto "ListView" con il tasto destro del mouse...
 If Mouse.Right Then
' ...allora verifica se alle coordinate ove si è cliccato esiste un item valido dell'oggetto "ListView":
   If ListView1.FindAt(Mouse.X, Mouse.Y) Then Return
' Crea innanzitutto il Menu principale:
     menu1 = New Menu(Me)
      
' Poi crea quattro sotto-Menu:
     For j = 1 To 4
       submenu1 = New Menu(menu1)
' Mostra il testo per ciascuno dei quattro sotto-Menu:
       submenu1.Text = "submenu1_" & CStr(j)
        
' Poi crea tre sotto-Menu per ciascun precedente sotto-Menu:
       For k = 1 To 3
         submenu2 = New Menu(submenu1)
         b += 1
' Mostra il testo per ciascuno dei tre sotto-Menu:
         submenu2.Text = "submenu2_" & CStr(b)
' Assegna all'azione, quando si cliccherà su uno dei secondi sotto-Menu, il testo del secondo sotto-Menu medesimo:
         submenu2.Action = submenu2.Text
       Next
     Next
      
' Mostra quindi le finestre di ciascun Menu:
     menu1.Popup
  
 Endif
  
End

Public Sub Action_Activate(azione As String) As Boolean
 
' Mostra in console semplicemente il testo del sotto-Menu cliccato:
 Print azione
  
End


Qualora invece il menu popup sia stato già creato mediante l'Editor Menu dell'IDE di Gambas [Note 2] , si potrà adottare il seguente codice:

Public Sub Form_Open()
 
 With ListView1
   .Add("chiave0", "aaaaa")
   .Add("chiave1", "bbbbb")
   .Add("chiave2", "ccccc")
 End With
 
End

Public Sub ListView1_MouseDown()
 
 ListView1.PopupMenu = Null
 If ListView1.FindAt(Mouse.X, Mouse.Y) Then Return
 ListView1.PopupMenu = "mnuPopup"
  
End

Public Sub Action_Activate(sKey As String) As Boolean
 
 Select Case sKey
   Case "popup-taglia"
     PopupTaglia()
   Case "popup-copia"
     PopupCopia()
   Case "popup-incolla"
     PopupIncolla()
 End Select
 
End

Private Sub PopupTaglia()

 Clipboard.Current = 0
 
 Clipboard.Copy(ListView1.Current.Text)
 
 ListView1.Current.Text = Null
  
End


Private Sub PopupCopia()
 
 Clipboard.Current = 0
 
 If ListView1.Current.Text Then Clipboard.Copy(ListView1.Current.Text)
  
End


Private Sub PopupIncolla()
 
 Clipboard.Current = 0
 
 ListView1.Current.Text = Clipboard.Paste()
  
End


Note

[1] Vedi anche: Creare Menu a finestra

[2] Vedi questa pagina della Wiki: Creare Menu popup utilizzando l’editor di menu