09. september 2002 - 12:23
Der er
4 kommentarer og
1 løsning
VBA drag/drop
I Access har jeg et tree activeX, hvor jeg har kodet noget dragdrop, således at brugerne kan flytte de enkelte noder.
Problemmet er at holde det indenfor controllen, nu kan man trække en node til f.eks Excel, hvorefter den er slettet i mit 'træ'.
Hvordan undgår jeg det ?????
Niels
09. september 2002 - 12:24
#1
'************************* DRAG DROP ***********************
Private Sub ctlTree_OLEDragDrop(Data As Object, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single)
Dim strkey As String, strText As String
Dim nodnew As Node, nodDragged As Node
If objTree.SelectedItem Is Nothing Then
Else
Set nodDragged = objTree.SelectedItem
If objTree.DropHighlight Is Nothing Then
strkey = nodDragged.Key
strText = nodDragged.Text
objTree.Nodes.Remove nodDragged.Index
objTree.Nodes.Add , , strkey, strText
Call loadTree(Mid(strkey, 3), 1)
DoCmd.RunSQL "update tblNode set parrentid = 0 WHERE " & _
"nodeid = " & Mid(strkey, 3)
ElseIf nodDragged.Index <> objTree.DropHighlight.Index Then
Set nodDragged.Parent = objTree.DropHighlight
DoCmd.RunSQL "update tblNode set parrentid = " & _
Mid(objTree.DropHighlight.Key, 3) & " WHERE " & _
"nodeid = " & Mid(nodDragged.Key, 3)
End If
End If
Set nodDragged = Nothing
Set objTree.DropHighlight = Nothing
End Sub
Private Sub ctlTree_OLEDragOver(Data As Object, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single, State As Integer)
If objTree.SelectedItem Is Nothing Then
objTree.SelectedItem = ctlTree.HitTest(x, y)
End If
objTree.DropHighlight = ctlTree.HitTest(x, y)
End Sub
Private Sub ctlTree_OLEStartDrag(Data As Object, AllowedEffects As Long)
ctlTree.SelectedItem = Nothing
End Sub
'*************************** DRAG DROP SLUT **********
09. september 2002 - 12:27
#2
Hvis nogen ved hvorledes man bruger parametrene:
Data As Object, Effect As Long
eller har links til gode eksempler, er de også MEGET velkomne :o)
Niels