Tutoriel - drag & drop entre listboxes

Description

Ceci est un tout petit code qui sert à montrer l'utilisation du Drag & Drop entre deux listboxes.

Source / Exemple :


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

Private nDraggedItemIndex As Integer

Private Sub Form_Load()
Dim a As Integer
    For a = 0 To 10
        Liste(0).AddItem "Item " & Chr$(65 + a) & "-0"
        Liste(1).AddItem "Item " & Chr$(65 + a) & "-1"
    Next a
    nDraggedItemIndex = -1
End Sub

Private Sub Liste_DragDrop(Index As Integer, Source As Control, X As Single, Y As Single)
    If nDraggedItemIndex <> -1 Then
        Liste(Index).AddItem Source.List(nDraggedItemIndex), Liste(Index).ListIndex + 1
        Source.RemoveItem nDraggedItemIndex
        nDraggedItemIndex = -1
        Source.DragMode = vbManual
    End If
End Sub

Private Sub Liste_DragOver(Index As Integer, Source As Control, X As Single, Y As Single, State As Integer)
Dim Coords As Long
Dim OverIndex As Long

    Coords = Me.ScaleY(Y, vbTwips, vbPixels) * &H10000 + Me.ScaleX(X, vbTwips, vbPixels)
    OverIndex = SendMessage(Liste(Index).hwnd, LB_ITEMFROMPOINT, 0&, ByVal Coords)

    If Liste(Index).ListCount > 0 Then
        Liste(Index).ListIndex = OverIndex Mod &H10000
    End If
    
    If nDraggedItemIndex = -1 Then
        nDraggedItemIndex = Source.ListIndex
    End If
End Sub

Private Sub Liste_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Liste(Index).ListIndex <> -1 And Button = vbLeftButton Then
        Liste(Index).DragMode = vbAutomatic
        Liste(Index).Drag
    End If
End Sub

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.