Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
292to296
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
292to296
292to296
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

TreeView Control - Nodes verschieben, Drag&Drop

TreeView Control - Nodes verschieben, Drag&Drop
17.08.2003 18:12:34
Michael Brüggemann
Liebe Spezialisten,
bis hierher habe ich mich mit dem TreeView Control noch durchgefummelt (anlegen und löschen von Knoten).
Nunmehr möchte ich jedoch bereits angelegte Knoten verschieben, sei es über den Klick auf einen "nach unten" oder "nach oben" Button, sei es über Drag & Drop.
Meine Recherche in diesem Forum ergab bisher leider nur sehr geringe Informationen und es scheint (laut Hans himself), dass in VBA Drag&Drop mit dem TreeView Control nicht möglich ist.
Hier also meine Fragen:
1.
Ist Drag & Drop mit VBA und dem TreeView Control möglich ? Wenn ja, wie (hat jemand von Euch so etwas schon programmiert) ?
2.
Wie verschiebe ich Knoten innerhalb eines Baumes ? Muss ich mir die Attribute des Knotens vielleicht sogar merken, den Knoten löschen und an der neuen Position wieder hinzufügen ?
Danke für jede Idee und Erfahrung
Michael

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: TreeView Control - Nodes verschieben, Drag&Drop
17.08.2003 19:04:55
Jochen
Hallo,
meinst du so wie im Explorer einen Ordner verschieben?
Gruß Jochen

AW: TreeView Control - Nodes verschieben, Drag&Drop
17.08.2003 21:33:13
Michael Brüggemann
Hallo Jochen,
genau darauf will ich hinaus. Das Objekt TreeView gibt das her. Ich habe jedoch bis jetzt keine Quelle gefunden, die das Handling in VBA beschreibt.
Michael

AW: TreeView Control - Nodes verschieben, Drag&Drop
17.08.2003 22:04:12
Jochen
Hallo,
Welches Ereignis im TreeView soll das deiner Meinung nach hergeben?
Gruß Jochen

AW: TreeView Control - Nodes verschieben, Drag&Drop
17.08.2003 23:07:53
Michael Brüggemann
Hallo Jochen,
hier ein Beispiel aus der Hilfedatei zu den MS Common Controls. Danach sind Ereignisse und Methoden vorgesehen, jedoch offensichtlich mit VBA nicht benutzbar:
' Declare global variables.
Dim indrag As Boolean ' Flag that signals a Drag Drop operation.
Dim nodX As Object ' Item that is being dragged.

Private Sub Form_Load()
' Load a bitmap into an Imagelist control.
Dim imgX As ListImage
Dim BitmapPath As String
BitmapPath = "icons\mail\mail01a.ico"
Set imgX = ImageList1.ListImages.Add(, , LoadPicture(BitmapPath))
' Initialize TreeView control and create several nodes.
TreeView1.ImageList = ImageList1
Dim nodX As Node      ' Create a tree.
Set nodX = TreeView1.Nodes.Add(, , , "Parent1", 1)
Set nodX = TreeView1.Nodes.Add(, , , "Parent2", 1)
Set nodX = TreeView1.Nodes.Add(1, tvwChild, , "Child 1", 1)
Set nodX = TreeView1.Nodes.Add(1, tvwChild, , "Child 2", 1)
Set nodX = TreeView1.Nodes.Add(2, tvwChild, , "Child 3", 1)
Set nodX = TreeView1.Nodes.Add(2, tvwChild, , "Child 4", 1)
Set nodX = TreeView1.Nodes.Add(3, tvwChild, , "Child 5", 1)
nodX.EnsureVisible ' Expand tree to show all nodes.
End Sub


Private Sub TreeView1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
Set nodX = TreeView1.SelectedItem ' Set the item being dragged.
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 ' Signal a Drag operation.
indrag = True ' Set the flag to true.
' Set the drag icon with the CreateDragImage method.
TreeView1.DragIcon = TreeView1.SelectedItem.CreateDragImage
TreeView1.Drag vbBeginDrag ' Drag operation.
End If
End Sub


Private Sub TreeView1_DragDrop(Source As Control, x As Single, y As Single)
' If user didn't move mouse or released it over an invalid area.
If TreeView1.DropHighlight Is Nothing Then
indrag = False
Exit Sub
Else
' Set dragged node's parent property to the target node.
On Error GoTo checkerror ' To prevent circular errors.
Set nodX.Parent = TreeView1.DropHighlight
Cls
Print TreeView1.DropHighlight.Text & _
" is parent of " & nodX.Text
' Release the DropHighlight reference.
Set TreeView1.DropHighlight = Nothing
indrag = False
Exit Sub ' Exit if no errors occured.
End If
checkerror:
' Define constants to represent Visual Basic errors code.
Const CircularError = 35614
If Err.Number = CircularError Then
Dim msg As String
msg = "A node can't be made a child of its own children."
' Display the message box with an exclamation mark icon
' and with OK and Cancel buttons.
If MsgBox(msg, vbExclamation & vbOKCancel) = vbOK Then
' Release the DropHighlight reference.
indrag = False
Set TreeView1.DropHighlight = Nothing
Exit Sub
End If
End If
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)
End Sub

CIAO
Michael

Anzeige
AW: TreeView Control - Nodes verschieben, Drag&Drop
18.08.2003 00:02:40
Jochen
Hallo,
ich wüßte auf den ersten Blick nicht, warum das in VBA nicht gehen sollte.
Der Code setzt eine Imagelist voraus, die ebenfalls aus den Common- Controls
ist und auch in VBA genutzt werden kann.
Das Einzige was es in VBA nicht gibt, ist das Form_load, was aber durch
UserForm_Initialize ersetzt werden kann.
Gruß Jochen

AW: TreeView Control - Nodes verschieben, Drag&Drop
18.08.2003 02:48:12
Jochen
Hallo,
nach etwas genauerem Hinschauen sind da doch einige sachen, die in
VBA nicht gehen: z.B. dragicon, drag, print, cls sind nur in VB
verfügbar.
Gruß Jochen

258 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige