Avatar billede l3kris Nybegynder
28. december 2003 - 14:33 Der er 6 kommentarer og
1 løsning

listbox med multiselect - flyt fra en lb til en anden

Jeg har to listboxe, en lb med mulige deltagere (lbMulige)at vælge imellem, en anden lb, hvor de valgte deltagere figurerer (lbDeltagere). Det fungerer fint, når jeg kun vælger én deltager ad gangen, men jeg ville gerne lave multiselect, så jeg kan overføre flere deltagere fra lbMulige til lbDeltagere på samme tid.

Min kode:

  For i = 0 To (lbMulige.ListCount - 1)
        If lbMulige.Selected(i) = True Then
            lbDeltagere.AddItem lbMulige.List(i)
            lbMulige.RemoveItem (lbMulige.ListIndex)
        End If
  Next i

Jeg går ud fra, at det er relativt simpelt, men jeg har ikke kunnet regne det ud.
Avatar billede the_master Nybegynder
28. december 2003 - 14:58 #1
det er simpelt
lav' en commandbuttom og kald den for cmdAdd
ind sæt denne kode

Private Sub cmdAdd_Click()
Dim i, j As Integer
Dim found As Boolean
    For i = 0 To IbMulige.ListCount - 1
        If IbMulige.Selected(i) Then
            found = False
            If lbDeltagere.ListCount > 0 Then
                For j = 0 To lbDeltagere.ListCount - 1
                    If lbDeltagere.List(j) = IbMulige.List(i) Then found = True
                Next j
                    If Not found Then
                      lbDeltagere.AddItem IbMulige.List(i)
                    Else
                        MsgBox "already in the list!"
                    End If
            Else
                lbDeltagere.AddItem IbMulige.List(i)
            End If
        End If
    Next i
End Sub
Avatar billede the_master Nybegynder
28. december 2003 - 15:00 #2
du skal lige sæt din listbox til multiselect = 1
Avatar billede l3kris Nybegynder
28. december 2003 - 18:03 #3
Det kan godt være, at jeg ikke helt har forstået det, men så vidt jeg kan se, sørger din kode "først og fremmest" for, at den samme deltager ikke bliver tilføjet flere gange, korrekt? Det ordner jeg med RemoveItem. Men det er måske det, der er galt? Går der kludder i det, når jeg fjerner navne fra listen undervejs?
Avatar billede the_master Nybegynder
28. december 2003 - 18:39 #4
Hvordan ser din form ud
Avatar billede l3kris Nybegynder
28. december 2003 - 19:19 #5
Jeg har to forms ved siden af hinanden - en med mulige, en der viser, hvad der er valgt. Men jeg har løst det:
 
  For i = (lbMulige.ListCount - 1) To 0 step -1
        If lbMulige.Selected(i) = True Then
            lbDeltagere.AddItem lbMulige.List(i)
            lbMulige.RemoveItem (lbMulige.ListIndex)
        End If
  Next i

Problemet var, at der gik kludder i nummereringen, når items blev fjernet undervejs...

Du får pointene, fordi du fik mig på sporet :)
Avatar billede l3kris Nybegynder
28. december 2003 - 19:29 #6
nej, ikke to forms, to listboxes selvfølgelig.
Avatar billede l3kris Nybegynder
28. december 2003 - 19:53 #7
For i = (lbMulige.ListCount - 1) To 0 step -1
        If lbMulige.Selected(i) = True Then
            lbDeltagere.AddItem lbMulige.List(i)
            lbMulige.RemoveItem (i)
        End If
  Next i
... for at være helt præcis - hvis nogen vil kopiere. :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester