Rubrik: Maus & Tastatur · Drag & Drop | VB-Versionen: VB6 | 07.05.09 |
Drag & Drop vom Explorer ins ListView Ein Beispiel, wie man Dateien aus dem Explorer positionsgenau in ein ListView ziehen kann. | ||
Autor: Dieter Otter | Bewertung: | Views: 14.810 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Folgende Problemstellung wurde vor einiger Zeit im Forum gepostet:
- Es sollen mittels Drag & Drop Dateien (bspw. aus dem Windows Explorer) in ein ListView-Control gezogen werden können.
- Die Datei selbst soll hierbei aber nicht am Ende der Liste angefügt werden, sondern zwischen den beiden Einträgen, über denen sich der Mauszeiger beim Loslassen der Maustaste gerade befindet.
Das Ganze lässt sich wunderbar per OLE Drag & Drop realisieren. Die korrekte Position lässt sich hierbei über die x- und y-Parameter im OLEDragDrop-Event ermitteln.
Private Sub ListView1_OLEDragDrop(Data As MSComctlLib.DataObject, _ Effect As Long, Button As Integer, Shift As Integer, _ x As Single, y As Single) Dim oItem As ListItem Dim index As Long ' Ende der Liste ermitteln ' wird benötigt, falls sich der Mauszeiger über ' keinen existierenden Eintrag befindet) index = ListView1.ListItems.Count + 1 ' Prüfen, ob sich der Mauszeiger über einen ' bereits vorhandenen Eintrag befindet Set oItem = ListView1.HitTest(x, y) If Not oItem Is Nothing Then ' Falls ja, Index des Eintrags ermitteln index = oItem.index End If ' neuen Eintrag der Liste hinzufügen ListView1.ListItems.Add index, , Data.Files(1) End Sub