...in grandi linee:
Public Sub Form_Open()
With ListView1
.Add("chiave0", "aaaaa")
.Add("chiave1", "bbbbb")
.Add("chiave2", "ccccc")
End With
End
Public Sub ListView1_MouseUp()
If Mouse.Right Then
If ListView1.FindAt(Mouse.X, Mouse.Y) Then Return
Print ListView1.Current.Text
Endif
End
Non vedo come questo possa aiutare Tornu col menu popup.
Cerco di spiegarmi meglio:
Public Sub Form_Open()
With ListView1
.Add("chiave0", "aaaaa")
.Add("chiave1", "bbbbb")
.Add("chiave2", "ccccc")
End With
End
Public Sub ListView1_MouseUp()
Dim menu1, submenu1, submenu2 As Menu
Dim j, k, b As Byte
If Mouse.Right Then
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
Mi sono arreso, con il menù popup creato con l'Editor Menu non sono riuscito ad avere il controllo che mi serviva.
Con il codice suggeritomi da vuott ho ottenuto ciò che mi serviva, ora il menu popup viene visualizzato solo
se clicco con il tasto destro sui dati visualizzati nella TableView e non in qualsiasi parte della stessa.
Solo alcune indicazioni aggiuntive (vedi commenti sulle righe) se qualcuno dovesse utilizzare questo codice:
Public Sub Form_Open()
With ListView1
.Add("chiave0", "aaaaa")
.Add("chiave1", "bbbbb")
.Add("chiave2", "ccccc")
End With
End
Public Sub ListView1_MouseUp()
Dim menu1, submenu1, submenu2 As Menu
Dim j, k, b As Byte
If Mouse.Right Then
If ListView1.FindAt(Mouse.X, Mouse.Y) Then Return
' Crea innanzitutto il Menu principale:
menu1 = New Menu(Me, False) 'La variabile booleana in questo caso non è indispensabile
' Poi crea quattro sotto-Menu:
For j = 1 To 4
submenu1 = New Menu(menu1) As "submenu1" 'Senza non viene sollevato l'evento submenu1_click()
' 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
Mi sono arreso, con il menù popup creato con l'Editor Menu non sono riuscito ad avere il controllo che mi serviva.
(http://www.geeksandbeats.com/wp-content/uploads/2014/06/waiting.gif)
Presupponendo che il Menu Popup per l'oggetto ListView sia stato creato con l'Editor-Menu dell'IDE con le modalità descritte in questa pagina:
http://www.gambas-it.org/wiki/index.php?title=Creare_Menu_popup_utilizzando_l%E2%80%99editor_di_menu
suggerirei allora 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