Results 1 to 2 of 2

Thread: Move item in listbox with the mouse

  1. #1

    Thread Starter
    Junior Member
    Join Date
    Dec 2000
    Location
    Brooklyn Ohio
    Posts
    26
    If I forget to put an item in a list box. Can I put it in and move it where it needs to be with the mouse


    Thank you for your help

  2. #2
    Fanatic Member
    Join Date
    Jan 2001
    Location
    Vietnam
    Posts
    613
    Hi CDogg,

    Here is the code again. This time I add another TextBox.
    This code allowed you to the following extra thing:

    1. Drag item in list box to the text box
    2. Drag item in your list box up and down (re-arrange order)

    Code:
    Option Explicit
    
    Private Sub cmdAdd_Click()
      Dim sTmp As String
      sTmp = InputBox("Enter new item to add:")
      If Len(sTmp) = 0 Then Exit Sub
      lstItems.AddItem sTmp
    End Sub
    
    Private Sub cmdDelete_Click()
      If lstItems.ListIndex > -1 Then
        If MsgBox("Delete '" & lstItems.Text & "'?", vbQuestion + vbYesNo) = vbYes Then
          lstItems.RemoveItem lstItems.ListIndex
        End If
      End If
    End Sub
    
    Private Sub cmdUp_Click()
      On Error Resume Next
      Dim nItem As Integer
      
      With lstItems
        If .ListIndex < 0 Then Exit Sub
        nItem = .ListIndex
        If nItem = 0 Then Exit Sub  'can't move 1st item up
        'move item up
        .AddItem .Text, nItem - 1
        'remove old item
        .RemoveItem nItem + 1
        'select the item that was just moved
        .Selected(nItem - 1) = True
      End With
    End Sub
    
    Private Sub cmdDown_Click()
      On Error Resume Next
      Dim nItem As Integer
      
      With lstItems
        If .ListIndex < 0 Then Exit Sub
        nItem = .ListIndex
        If nItem = .ListCount - 1 Then Exit Sub 'can't move last item down
        'move item down
        .AddItem .Text, nItem + 2
        'remove old item
        .RemoveItem nItem
        'select the item that was just moved
        .Selected(nItem + 1) = True
      End With
    End Sub
    
    Private Sub lstItems_DragDrop(Source As Control, X As Single, Y As Single)
      Dim i As Integer
      Dim nID As Integer
      Dim sTmp As String
      
      If Source.Name <> "lstItems" Then Exit Sub
      If lstItems.ListCount = 0 Then Exit Sub
      
      With lstItems
        i = (Y \ TextHeight("A")) + .TopIndex
        If i = .ListIndex Then
          'dropped on top of itself
          Exit Sub
        End If
        If i > .ListCount - 1 Then i = .ListCount - 1
        nID = .ListIndex
        sTmp = .Text
        If (nID > -1) Then
          sTmp = .Text
          .RemoveItem nID
          .AddItem sTmp, i
          .ListIndex = .NewIndex
        End If
      End With
      SetListButtons
    End Sub
    
    Sub lstItems_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
      If Button = vbLeftButton Then lstItems.Drag
    End Sub
    
    Private Sub Text1_DragDrop(Source As Control, X As Single, Y As Single)
        Text1.Text = Source.Text
    End Sub
    
    Private Sub lstItems_Click()
      SetListButtons
    End Sub
    
    Sub SetListButtons()
      Dim i As Integer
      i = lstItems.ListIndex
      'set the state of the move buttons
      cmdUp.Enabled = (i > 0)
      cmdDown.Enabled = ((i > -1) And (i < (lstItems.ListCount - 1)))
      cmdDelete.Enabled = (i > -1)
    End Sub
    Please ask your question here ( do not send me a message)

    Regards,
    TheBao

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width