Evitare che appaia il popmenu quando si clicca al di fuori di un elemento di una ListView
Da Gambas-it.org - Wikipedia.
Versione del 23 set 2017 alle 17:30 di Vuott (Discussione | contributi)
Per far sì che non appaia il menu popup, quando si clicca con il 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 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: http://www.gambas-it.org/wiki/index.php?title=Creare_Menu_popup_utilizzando_l%E2%80%99editor_di_menu