Jag vill kunna flytta noder i en treeview ( drag and drop ) Hej... Nä det funkar nog inte jag har exempelkod för men den har jag på en annan dator så jag kan lägga upp den senare (om jag kommer ihåg) Här har du lite grundgläggande drag och drop begrännsad till nivå och förälder:Drag-Drop i en treeview
Är det ngn som ha exempelkod på det ??
Jag vill alltså kunna klicka på en nod och flytta den till en annan position i trädet. ( samma nivå ) Finns det kanske någon annan kontroll som är lämpligare att använda ?Sv: Drag-Drop i en treeview
Möjligtvis kan du använda listview. så blir det som i utforskan... fast kanske inte det du vill uppnå (?)
Go' JuL // R-musSv: Drag-Drop i en treeview
Det jag vill åstadkomma är ett sätt för användaren att ändra sorteringsordningen. DVS när användaren flyttar en nod i trädet så skall även databasen uppdateras med ett index
God Jul Sv: Drag-Drop i en treeview
Sv: Drag-Drop i en treeview
<code>
Option Explicit
Private mDragNode As Node
Private Sub Form_Load()
LoadNodes TreeView1
End Sub
Private Sub TreeView1_DragDrop(Source As Control, x As Single, y As Single)
Dim Drop As Node
Set Drop = TreeView1.DropHighlight
If Drop Is Nothing Then
Else
' Kod som flytta poster i databas
' Kod som flytta noder (Rekomenderat men krångligt) eller ladda om trädet
TreeView1.DropHighlight = Nothing
End If
End Sub
Private Sub TreeView1_DragOver(Source As Control, x As Single, y As Single, State As Integer)
Dim Hover As Node
Set Hover = TreeView1.HitTest(x, y)
If Hover Is Nothing Then
Set TreeView1.DropHighlight = Nothing
Else
If mDragNode.Parent Is Nothing Then
If Hover.Parent Is Nothing Then
Set TreeView1.DropHighlight = Hover
Else
Set TreeView1.DropHighlight = Nothing
End If
Else
If Hover.Parent Is mDragNode.Parent Then
Set TreeView1.DropHighlight = Hover
Else
Set TreeView1.DropHighlight = Nothing
End If
End If
End If
End Sub
Private Sub TreeView1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
If Button And vbLeftButton Then
Set mDragNode = TreeView1.HitTest(x, y)
End If
End Sub
Private Sub TreeView1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
If Button And vbLeftButton Then
If Not mDragNode Is Nothing Then
Set TreeView1.SelectedItem = mDragNode
TreeView1.DragIcon = mDragNode.CreateDragImage
TreeView1.Drag vbBeginDrag
End If
End If
End Sub
Private Sub TreeView1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
If Button And vbLeftButton Then
Set mDragNode = Nothing
End If
End Sub
Sub LoadNodes(TreeView As TreeView)
Dim Node As Node
Dim Nodes As Nodes
Dim Index As Long
Const Count = 3
Set Nodes = TreeView.Nodes
For Index = 1 To Count
Set Node = Nodes.Add(, , , "Node " & Index, 1)
CreateNodes Nodes, Node, Count, 1, Count
Next
End Sub
Sub CreateNodes(Nodes As Nodes, Parent As Node, Count As Long, Level As Long, Levels As Long)
Dim Node As Node
Dim Index As Long
If Level < Levels Then
For Index = 1 To Count
Set Node = Nodes.Add(Parent, tvwChild, , Parent.Text & "." & Index, 1)
CreateNodes Nodes, Node, Count, Level + 1, Levels
Next
End If
End Sub
</code>