28. december 2003 - 14:33Der 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.
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
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?
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...
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. :)
Synes godt om
Ny brugerNybegynder
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.