Zusammenfassung
Erfahren Sie, wie Sie Elemente im Treeview mit Drag and Drop verschieben.
Techniken
Formulare, Treeview-Steuerelement, VBA
Voraussetzungen
Access 2002 und höher oder Access 97/2000 und Developer Edition oder Visual Studio 6.0
Beispieldateien
André Minhorst, Duisburg
Das Treeview-Steuerelement lässt sich sehr gut zur Darstellung von hierarchischen Daten verwenden. Im Gegensatz zu den üblichen Access-Steuerelementen unterstützt es auch Drag and Drop. Wie das im Detail funktioniert, erfahren Sie im vorliegenden Beitrag.
Drag and Drop-Operationen erfordern je nach Anwendungsfall einige Zeilen Code. Voraussetzung ist, dass Sie die Einstellung für die Eigenschaften OLEDragMode auf ccOLEDragAutomatic und OLEDropMode auf ccOLEDropManual festlegen. Das können Sie im Eigenschaftsdialog des Treeview-Steuerelements erledigen (siehe Bild 1) oder per Code:
objTreeview.OLEDragMode = _ ccOLEDragAutomatic objTreeview.OLEDropMode = ccOLEDropManual
Außerdem sind einige Ereignisprozeduren mit Leben zu füllen. Diese lassen sich nicht wie bei den üblichen Access-Steuerelementen über das Eigenschaftsfenster anlegen, sondern müssen direkt im VBA-Editor erstellt werden.
Bild 1: Eigenschaften eines Treeview-Steuerelements
Dazu deklarieren Sie zunächst eine Objektvariable für das Treeview-Steuerelement, das Sie in der Beim Laden-Ereignisprozedur des Formulars zuweisen (s. Quellcode 1).
Quellcode 1: Deklarieren und Zuweisen des Treeview-Objekts
Dim objTreeview As MSComctlLib.Treeview Private Sub Form_Load() Set objTreeview = Me.ctlTreeview.Object End Sub
Allein durch die Deklarationszeile können Sie innerhalb der Prozeduren per IntelliSense auf die einzelnen Eigenschaften und Methoden des Treeview-Steuerelements zugreifen und dessen Ereignisprozeduren mit den beiden Kombinationsfeldern im Kopf des VBA-Codefensters anlegen.
Bild 2: Anlegen von Ereignisprozeduren im VBA-Codefenster
Auf diese Weise sind die nachfolgend benötigten drei Prozeduren schnell erstellt (siehe Bild 2). Das Ereignis OLEStartDrag wird ausgelöst, wenn Sie den Mauszeiger auf einem Eintrag positionieren, die linke Maustaste gedrückt halten und den Mauszeiger dabei bewegen.
Das Ereignis OLEDragOver wird nach dem Ereignis OLEStartDrag in kurzen Abständen ausgelöst – es könnte eigentlich OLEDragMouseMove heißen -, bis Sie die Maustaste loslassen. Dies wiederum ruft das Ereignis OLEDragDrop auf den Plan.
Damit hätten Sie das Werkzeug beisammen – mit Ausnahme einiger nützlicher Eigenschaften des Treeview-Steuerelements:
Sobald Access den Start einer Drag and Drop-Operation erkennt, soll kein Knoten mehr markiert sein. Das erledigt der Einzeiler aus Quellcode 2.
Aber warum soll die Markierung des aktuell ausgewählten Knotens aufgehoben werden Ganz einfach: Dieser Knoten ist nicht unbedingt mit dem identisch, der per Drag and Drop verschoben werden soll.
Dementsprechend wird in der während des Drag and Drop-Vorgangs immer wieder ausgeführten Ereignisprozedur OLEDragOver zunächst der zu verschiebende Eintrag über die Eigenschaft SelectedItem als aktueller Eintrag markiert.
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
den kompletten Artikel im PDF-Format mit Beispieldatenbank
diesen und alle anderen Artikel mit dem Jahresabo