Nachfolgend ein Beispiel, wie man einzelne Einträge innerhalb der VB Standard-ListBox via Drag & Drop verschieben kann. Benötigt wird eine Form mit einem ListBox-Control (List1) und nachfolgender Code: Option Explicit ' Benötigte API-Deklaration 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 Private Const LB_ITEMFROMPOINT = &H1A9 Dim nDragIndex As Long Private Sub Form_Load() Dim i As Long With List1 ' Liste mit Test-Werten füllen For i = 1 To 100 List1.AddItem "Eintrag " & CStr(i) Next i ' OLE Drag/DropMode - Eigenschaften festlegen .OLEDragMode = 1 .OLEDropMode = 1 End With nDragIndex = -1 End Sub Private Sub List1_OLEStartDrag(Data As DataObject, AllowedEffects As Long) ' ListIndex merken nDragIndex = List1.ListIndex End Sub Private Sub List1_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, _ Shift As Integer, X As Single, Y As Single) Dim sTemp As String If Data.GetFormat(vbCFText) And nDragIndex >= 0 Then ' Inhalt des selektierten Eintrags auslesen sTemp = Data.GetData(vbCFText) ' Element ermitteln, über dem sich der Mauszeiger aktuell befindet Dim nXPoint As Long Dim nYPoint As Long Dim nIndex As Long ' Umrechnen der Mauskoordinaten in Pixel nXPoint = CLng(X / Screen.TwipsPerPixelX) nYPoint = CLng(Y / Screen.TwipsPerPixelY) With List1 ' ListIndex anhand Mausposition ermitteln nIndex = SendMessage(.hwnd, LB_ITEMFROMPOINT, 0, ByVal ((nYPoint * 65536) + nXPoint)) If (nIndex >= 0) And (nIndex <= .ListCount) Then ' Selektierten Eintrag löschen List1.RemoveItem nDragIndex ' Selektiertes Element an die aktuelle Position verschieben List1.AddItem sTemp, nIndex End If End With End If End Sub Private Sub List1_OLECompleteDrag(Effect As Long) ' gemerkten Index zurücksetzen nDragIndex = -1 End Sub Dieser Tipp wurde bereits 14.173 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats Januar 2025 Dieter Otter Zeilen einer MultiLine-TextBox ermitteln (VB.NET) Dieser Zipp zeigt, wie man die Zeilen einer MultiLine-TextBox exakt so ermitteln kann, wie diese auch in der TextBox dargestellt werden. sevGraph (VB/VBA) Grafische Auswertungen Präsentieren Sie Ihre Daten mit wenig Aufwand in grafischer Form. sevGraph unterstützt hierbei Balken-, Linien- und Stapel-Diagramme (Stacked Bars), sowie 2D- und 3D-Tortendiagramme und arbeitet vollständig datenbankunabhängig! |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |