Har ett problem som jag tagit upp tidigare i detta forum. Men jag provar igen Här kommer ett exempel som kanske löser ditt problem. Samt följer Windows beteendet mer korrekt.Click i en treeview
Jag har två händelser som ska köras i en treeview.
- Click
- DblClick
Problemet är att händelserna aktiveras på båda musknapparna. Kan man ta reda på vilken musknapp som trycks in i händelsen Click. Här kommer ett exempel hur jag skulle villa ha det.
Private Sub TV3_Click()
Dim Nod As Node
Set Nod = treeview1.HitTest(x, y)
If Nod Is Nothing Then 'Ingen nod träffades
Exit Sub
Else
Select Case Button ‘kollar vilken knapp som trycks in
Case Is = 2
PopupMenu TV ‘ visar en popupmenu
Case Is = 1
treeview1_list ‘listar alla m3u filer
End Select
End If
Exit Sub
Det skulle ju gå att använda händelsen Treeview1_MouseUp men när jag då aktiverar proceduren Treeview1_Click kommer Treeview1_MouseUp att köras två gånger i stället för en eftersom jag gör ett dubbelclick.
Någon som har en ide
MVH
johanSv: Click i en treeview
* Skapa ett nytt standard EXE projekt
* Skapa en meny som heter mnuPopUp i Form1
* Skapa en meny element under mnuPopUp
* Lägg till componenten "Microsoft Windows common controls 6"
* Lägg till en treeview i Form1
* Klistra in följande kode i Form1
Private mMouseX As Single
Private mMouseY As Single
Private mMenuNode As Node
Private Sub TreeView1_DblClick()
Dim DblClickNode As Node
Set DblClickNode = TreeView1.HitTest(mMouseX, mMouseY)
If DblClickNode Is Nothing Then
Else
treeview1_list DblClickNode
End If
End Sub
Private Sub TreeView1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
mMouseX = x
mMouseY = y
End Sub
Private Sub TreeView1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
If Button And vbRightButton Then
Set mMenuNode = TreeView1.HitTest(x, y)
If mMenuNode Is Nothing Then
Else
PopupMenu mnuPopUp, vbPopupMenuRightButton
End If
Set mMenuNode = Nothing
End If
End Sub
'*************************
Private Sub Form_Load()
Call TreeView1.Nodes.Add(TreeView1.Nodes.Add(TreeView1.Nodes.Add(TreeView1.Nodes.Add(TreeView1.Nodes.Add(TreeView1.Nodes.Add(, , , "Root"), tvwChild, , "Child 1.1"), tvwChild, , "Child 1.1.1"), tvwChild, , "Child 1.1.1.1"), tvwChild, , "Child 1.1.1.1.1"), tvwChild, , "Child 1.1.1.1.1.1")
End Sub
Private Sub Form_Resize()
TreeView1.Move 0, 0, ScaleWidth, ScaleHeight
End Sub
Private Sub treeview1_list(Node As Node)
MsgBox Node.Text
End Sub