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.
Riga 1: | Riga 1: | ||
− | Per far sì che non appaia il | + | 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. <SUP>[[[#Note|Note 1]]]</sup> |
+ | |||
+ | 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() | '''Public''' Sub Form_Open() | ||
Riga 52: | Riga 54: | ||
<FONT Color=gray>' ''Mostra in console semplicemente il testo del sotto-Menu cliccato:''</font> | <FONT Color=gray>' ''Mostra in console semplicemente il testo del sotto-Menu cliccato:''</font> | ||
Print azione | Print azione | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | |||
+ | Qualora invece il menu ''popup'' sia stato già creato mediante l'Editor Menu dell'IDE di Gambas, 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''' | '''End''' |
Versione delle 17:29, 23 set 2017
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, 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