Article ID: 177743
Article Last Modified on 7/13/2004
Option Explicit
Private Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Dim mfX As Single
Dim mfY As Single
Dim moNode As Node
Dim m_iScrollDir As Integer 'Which way to scroll
Dim mbFlag As Boolean
Private Sub Form_DragOver(Source As Control, x As Single, y As _
Single, State As Integer)
If Source.Name = "TreeView1" Then
Timer1.Enabled = False
End If
End Sub
Private Sub Form_Load()
Dim i As Integer
Dim n As Integer
Timer1.Enabled = False
Timer1.Interval = 200
TreeView1.Style = tvwTreelinesPlusMinusPictureText
TreeView1.ImageList = ImageList1
'Populate TreeView controls
For i = 1 To 50
TreeView1.Nodes.Add Text:="Node " & i, Image:=1, _
SelectedImage:=2
Next i
For i = 1 To 50
For n = 1 To 5
TreeView1.Nodes.Add Relative:=i, Relationship:=tvwChild, _
Text:="Child Node " & n, _
Image:=1, SelectedImage:=2
Next n
Next i
End Sub
Private Sub Timer1_Timer()
Set TreeView1.DropHighlight = TreeView1.HitTest(mfX, mfY)
If m_iScrollDir = -1 Then 'Scroll Up
' Send a WM_VSCROLL message 0 is up and 1 is down
SendMessage TreeView1.hwnd, 277&, 0&, vbNull
Else 'Scroll Down
SendMessage TreeView1.hwnd, 277&, 1&, vbNull
End If
End Sub
Private Sub TreeView1_DragDrop(Source As Control, x As Single, _
y As Single)
' If you were moving the Node you dragged to be the child
' of the Node you dropped it on, you would need to
' make moNode the selected Node after you made it a child
If Not TreeView1.DropHighlight Is Nothing Then
MsgBox moNode.Text & " was dropped on " & _
TreeView1.DropHighlight.Text
End If
Set TreeView1.DropHighlight = Nothing
Set moNode = Nothing
Timer1.Enabled = False
End Sub
Private Sub TreeView1_DragOver(Source As Control, x As Single, _
y As Single, State As Integer)
Set TreeView1.DropHighlight = TreeView1.HitTest(x, y)
mfX = x
mfY = y
If y > 0 And y < 100 Then 'scroll up
m_iScrollDir = -1
Timer1.Enabled = True
ElseIf y > (TreeView1.Height - 200) And y < TreeView1.Height Then
'scroll down
m_iScrollDir = 1
Timer1.Enabled = True
Else
Timer1.Enabled = False
End If
End Sub
Private Sub TreeView1_MouseUp(Button As Integer, Shift As Integer, _
x As Single, y As Single)
Timer1.Enabled = False
End Sub
Private Sub TreeView1_MouseDown(Button As Integer, Shift As _
Integer, x As Single, y As Single)
TreeView1.DropHighlight = TreeView1.HitTest(x, y)
'Make sure we are over a Node
If Not TreeView1.DropHighlight Is Nothing Then
TreeView1.SelectedItem = TreeView1.HitTest(x, y)
Set moNode = TreeView1.SelectedItem ' Set the item being dragged.
End If
Set TreeView1.DropHighlight = Nothing
End Sub
Private Sub TreeView1_MouseMove(Button As Integer, Shift As _
Integer, x As Single, y As Single)
If Button = vbLeftButton Then
TreeView1.DragIcon = TreeView1.SelectedItem.CreateDragImage
TreeView1.Drag vbBeginDrag
End If
End Sub
172272 : FILE: TREEVIEW: Manipulating and Saving the Nodes in a TreeView Control
Additional query words: dragdrop dragging dropping kbVBp500 kbVBp600 kbVBp kbdsd kbDSupport kbControl
Keywords: kbhowto KB177743