CodeItBetter Programming Another VB Programming Blog

How to enable the user to drag and drop items between two list boxes

Posted on July 29, 2011
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
'Controls - How to enable the user to drag and drop items between two list boxes
'Add two listboxes to your form, and insert the following code.

Private Sub Form_Load()    ' Populate the list
    List1.AddItem "James"
    List1.AddItem "Frederick"
    List1.AddItem "Ann"
    List1.AddItem "Paul"
    List1.AddItem "Sarah"
    List1.OLEDropMode = 1
    List2.OLEDropMode = 1
End Sub
 
'Code managing dropping from list one to list two
Private Sub List1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    List1.OLEDrag    ' Begin dragging
End Sub
 
Private Sub List1_OLEStartDrag(Data As DataObject, AllowedEffects As Long)    ' Only allow moves
    AllowedEffects = vbDropEffectMove    'Assign the ListBox selection to the DataObject
    Data.SetData List1
End Sub
 
Private Sub List2_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, _
    X As Single, Y As Single)
    Dim strList As String    ' Check the format of the DataObject
    If Not Data.GetFormat(vbCFText) Then Exit Sub    ' Retrieve the text from the DataObject
    strList = Data.GetData(vbCFText)    ' If the item was not dropped on itself
    If Not strList = List2.Text Then
        List2.AddItem strList        'Remove the item from the ListBox
        List1.RemoveItem List1.ListIndex
    End If
End Sub
 
' Code managing dropping from list one' to list two'
Private Sub List2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    List2.OLEDrag    ' Begin dragging
End Sub
 
Private Sub List2_OLEStartDrag(Data As DataObject, AllowedEffects As Long)    ' Only allow moves
    AllowedEffects = vbDropEffectMove    ' Assign the ListBox selection to the DataObject
    Data.SetData List2
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 strList As String    ' Check the format of the DataObject
    If Not Data.GetFormat(vbCFText) Then Exit Sub
    ' Retrieve the text from the DataObject
    strList = Data.GetData(vbCFText)
    ' If the item was not dropped on itself
    If Not strList = List1.Text Then
        List1.AddItem strList
        'Remove the item from the ListBox
        List2.RemoveItem List2.ListIndex
    End If
End Sub
Filed under: Controls Leave a comment
Comments (0) Trackbacks (0)

No comments yet.


Leave a comment


 

No trackbacks yet.