Avatar billede -l_jogge_l- Nybegynder
30. september 2003 - 09:32 Der er 13 kommentarer og
1 løsning

ListBox OMVENDT rækkefølger

Hvis man har en listebox, og gerne vil vende rækkefølgen, hvordan går man det?

Altså i stedet for:
1
2
3

Så bliver det:
3
2
1
Avatar billede martin_moth Mester
30. september 2003 - 10:04 #1
Tjaa - der er vel 100 måder

En er at læse listboxens indhold ind i et array, og læse arrayet baglæns ind.
En anden er at smide det over i en anden listbox, og starte nedefra (Altså fra tæller=list1.listcount til tæller=1)
Avatar billede -l_jogge_l- Nybegynder
30. september 2003 - 10:15 #2
Hvad er den hurtigste måde? Og den simpleste???

Jeg har måske mellem 50 - 100 poster i en liste!
Avatar billede tubber Juniormester
30. september 2003 - 10:23 #3
Du kan også tælle dine poster og tilføje posterne ved at lave en omvendt tæller......

Hvis du f.eks. har 98 poster gør du noget lignende det her:
min_taeller = 98
Do while min_taeller <> 0
List1.AddItem(min_taeller - 1) post
min_taeller = min_taeller - 1)
Loop
Avatar billede tubber Juniormester
30. september 2003 - 10:24 #4
du skal self tælle poster med en rutine
Avatar billede martin_moth Mester
30. september 2003 - 10:24 #5
50-100 poster - om det tager 0,0001 eller 0,0002 sekunder er vel ligegyldigt ;o)

Gør det du synes er lettest - med mindre det er et program der skal sælges til 10000 brugere og du skal bytte om på rækkefølgen 10000 gange, kan det være hips om haps (min personlige mening).

Arrayløsningen er i hvertfald nem at programmere.

Altså

For i = 0 to list1.listcount-1
  Kopier listitem nr. i over i array
Next i

List1.Clear

For i = UBound(array) to LBound(array)
  'Smid arraypost nr i over i list1
Next i

Kan ikke huske om man skal skrive Step -1 når man looper baglæns, som den nederste løkke, og har ikke VB til at teste. Men du har sikkert fanget poienten :o)
Avatar billede -l_jogge_l- Nybegynder
30. september 2003 - 10:36 #6
martin_mouth.... det lyder fandme fint, jeg jeg kender ikke så meget til det!!
Avatar billede joern Nybegynder
30. september 2003 - 10:54 #7
Hej.

Jeg ville nok bruge en msflexgrid med én kolonne.  Der kan rækkefølgen være ascending eller decending - og ændres i runtime.

M.v.h.  Jørn
Avatar billede martin_moth Mester
30. september 2003 - 10:54 #8
Jeg vil undlade at irreterer mig over at du kalder mig "martin_mouth" :o)
Du fik det til at virke?
Avatar billede martin_moth Mester
30. september 2003 - 10:56 #9
joern: Det er kun en mulighed hvis man rent faktisk vil sorterer - hvis du bare vil bytte om på rækkefølgen (fra fx. 1,2,4,3 til 3,4,2,1) vil det ikke hjælpe...
Avatar billede -l_jogge_l- Nybegynder
30. september 2003 - 11:09 #10
Nej kan ikke få den til det..... jeg forstår ikke helt det der du siger med:
  Kopier listitem nr. i over i array

Sorry about the name.... *GG*
Avatar billede venne Nybegynder
30. september 2003 - 11:09 #11
Det er ikke nødvendigt med ekstra arrays og lignende. Løb igennem listen forfra og bagfra og byt elementer undervejs:

  Dim i As Integer
  Dim j As Integer
  Dim s As String
 
  With List1
    i = 0
    j = .ListCount - 1
    Do While i < .ListCount \ 2
      s = .List(i)
      .List(i) = .List(j)
      .List(j) = s
      i = i + 1
      j = j - 1
    Loop
  End With
Avatar billede martin_moth Mester
30. september 2003 - 11:15 #12
venne: Den klart mest elegante løsning - var bare for dum til at konstruere den selv, da jeg havde på fornemmelsen at jeg skulle tage højde for lige hhv. ulige antal elementer i listen. Men lidt heltalsdivision osv, og det lykkedes på meget elegant vis, må jeg sige...

-| jogge |- : Nap løsningen fra venne! Mht det jeg skriver, så er det ment som speudokode du selv kan skrive, men det kan være ligemeget nu :o)
Avatar billede -l_jogge_l- Nybegynder
30. september 2003 - 11:16 #13
*GGG*... hvor du dog kan Martin_moth!! *GGGG*

Jeg takker for den fornemme præstation Venne!!!!!
Avatar billede martin_moth Mester
30. september 2003 - 11:25 #14
-l_jogge_l-  : Hvis du vil forstå løsningen fra venne (det vil du vel) så bemærk at han deler med tegnet \ i stedet for /. / er alm. division, \ er heltalsdivision - det gør en vigtig forskel, når du vil forstå hvad der sker.

Så kan jeg ikke finde på mere lort at lukke ud, så sjeg smutter igen...
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