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 13.975 mal aufgerufen.
Anzeige
![]() ![]() ![]() (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 ![]() Dieter Otter Beliebige Zeichen am Anfang und Ende eines Strings entfernen Mit der Trim-Funktion lassen sich nicht nur Leerzeichen, sondern bei Bedarf auch beliebige Zeichen entfernen. Neu! sevCoolbar 3.0 ![]() Professionelle Toolbars im modernen Design! Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access |
||||||||||||||||
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. |