Rubrik: Controls · ListBox | VB-Versionen: VB4, VB5, VB6 | 10.07.03 |
ListBox-Einträge per Maus verschieben Dieser Tipp zeigt, wie sich ein ListBox-Eintrag per gedrückter Maustaste nach oben oder nach unten verschieben lässt. | ||
Autor: E7 | Bewertung: | Views: 16.077 |
ohne Homepage | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Wollten Sie nicht schon immer einmal einzelne Listbox-Einträge mit der Maus verschieben? D.h. Sie klicken auf einen Eintrag, halten die Maustaste gedrückt und ziehen die Maus dann nach oben oder nach unten.
Nachfolgend der entsprechende VB-Code.
Zum Ausprobieren benötigen lediglich eine Form und eine Listbox.
Option Explicit Private nIndex As Long
Private Sub Form_Load() Dim i As Long ' Liste mit ein paar Test-Einträgen füllen For i = 1 To 100 List1.AddItem "Eintrag " & CStr(i) Next i nIndex = -1 End Sub
Private Sub List1_MouseDown(Button As Integer, Shift As Integer, _ X As Single, Y As Single) ' Index des Eintrags "merken" nIndex = List1.ListIndex End Sub
Private Sub List1_MouseMove(Button As Integer, Shift As Integer, _ X As Single, Y As Single) Dim sTemp As String ' Button gedrückt und Eintrag ausgewählt? If Button > 0 And nIndex > -1 Then With List1 If nIndex <> .ListIndex Then ' vorhergehenden Eintrag zwischenspeichern sTemp = .List(nIndex) ' vorhergehenden Eintrag durch aktuellen ' Eintrag ersetzen .List(nIndex) = .List(.ListIndex) ' aktuellen Eintrag durch vorgehenden ' Eintrag ersetzen .List(.ListIndex) = sTemp ' Index des aktuellen Eintrags "merken" nIndex = .ListIndex End If End With End If End Sub
Private Sub List1_MouseUp(Button As Integer, Shift As Integer, _ X As Single, Y As Single) ' Beim Loslassen der Maus "Merker" zurücksetzen nIndex = -1 End Sub