Avatar billede angelenglen Nybegynder
22. juni 2004 - 11:11 Der er 7 kommentarer og
1 løsning

Problemer med list box's tekst.

Jeg har en listbox.

Den bliver fx oprettet således:

list1.additem "gul", 4
list1.additem "blå", 34
list1.additem "rød", 2
list1.additem "grøn", 15
list1.additem "sort", 8

Som det kan ses er index ikke sorteret.

Jeg har så lavet en lille løkke der løber igennem listen, det er meningen at den skal skrive farverne.
Problemet er bare at jeg ikke p.t. har fundet en måde at aflæse teksten fra et bestemt item på listen...

den løkke jeg er ude efter skulle i dette tilfælde lave 5 MsgBox'es, hver indeholdende navnet på en farve...

Indtil videre kan jeg kun få index'ene ud sådan her:

  For i = 0 To list1.ListCount - 1 Step 1
    MsgBox list1.ItemData(i)
  Next

-det generer følgende MSG-boxes:

4, 34, 2, 15 og 8


-men jeg har brug for:

"gul", "blå", "rød", "grøn" og "sort"


hvordan?

please :)
Avatar billede angelenglen Nybegynder
22. juni 2004 - 11:44 #1
anyone? please please :)
Avatar billede tubber Juniormester
22. juni 2004 - 12:39 #2
Har prøvet at bruge din kode, men kan ikke få den til at gøre noget ikke engang adde de items, men hvis du mailer projektet så jeg kan se det hele skal jeg kigge på det..

tubber@krog-frandsen.dk

/Tubber
Avatar billede angelenglen Nybegynder
22. juni 2004 - 12:53 #3
jeg kan desværre ikke sende dig projektet, men her er nogle copy/pastes af min kode:





    '//udfyldning af lstVarer -listboxen
        lstVarer.Clear
        Set con = New ADODB.Connection
        Set rs = New ADODB.Recordset
       
        st = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\database.mdb;Persist Security Info=False"
       
        con.Open (st)
        SQL = "SELECT * FROM tbl_varer"  'vælger alle varer fra tabellen tbl_varer
        'MsgBox SQL
        rs.Open SQL, con, adOpenDynamic
       
       
        Do Until rs.EOF
            lstVarer.AddItem rs("navn")
            lstVarer.ItemData(lstVarer.NewIndex) = rs("id_varer")
            rs.MoveNext
        Loop
       
        rs.Close
        con.Close
        Set rs = Nothing
        Set con = Nothing





    '//udfyldning af lstIngredienser -listboxen
        Set con = New ADODB.Connection
        Set rs = New ADODB.Recordset
       
        st = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\database.mdb;Persist Security Info=False"
       
        con.Open (st)
        SQL = "SELECT * FROM tbl_opskrifter, tbl_varelister, tbl_varer WHERE "
        SQL = SQL & "tbl_opskrifter.id_opskrifter = " & frmOpskrifter1.lblValgtOpskrift.Caption
        SQL = SQL & " AND tbl_varelister.opskriftsid = " & frmOpskrifter1.lblValgtOpskrift.Caption
        SQL = SQL & " AND tbl_varelister.vareid = tbl_varer.id_varer"
        'MsgBox SQL
        rs.Open SQL, con, adOpenDynamic
       
        lstIngredienser.Clear
        Do Until rs.EOF
            txtOpskrift.Text = rs("tekst")
            txtNavn = rs("opskrift")
            lstIngredienser.AddItem rs("behov") & " " & rs("enhed") & " - " & rs("navn")
            lstIngredienser.ItemData(lstIngredienser.NewIndex) = rs("id_varer")
            lstAntal.AddItem rs("behov")
            lstAntal.ItemData(lstAntal.NewIndex) = rs("id_varer")
            txtKuverter.Text = rs("kuverter")
            cmbKategori.Text = rs("kategori")
            rs.MoveNext
        Loop
       
        rs.Close
        con.Close
        Set rs = Nothing
        Set con = Nothing
     






-men i bund og grund er hele problemet at aflæse teksten på et item i en listbox, ud fra dens listindex.
Avatar billede tubber Juniormester
22. juni 2004 - 16:45 #4
Hvordan skal det gøres ? altså aflæsningen ?

Hvis du markere en med musen så den item bliver blå så hedder den List1.Text det giver den tekst der står i feltet.......
Avatar billede joern Nybegynder
22. juni 2004 - 23:38 #5
Hej.

Jeg svarer kun på den oprindelige spørgsmål, kode-eksemplet fra kl. 12:53 forholder jeg mig ikke til.

Du kan ikke tilføje en item 4 til en listeboks, når der ikke er nogen nul, et, to og tre i forvejen, - og selvfølgelig heller ikke nummer 34.  Jeg har ikke prøvet, men mener, at det ikke er muligt.

Fra hjælpen til AddItem:  Remarks
If you supply a valid value for index, item is placed at that position within the object.

Når listen på et tidspunkt indeholder 5 poster, vil en løkke naturligvis kunne vise posterne i meddelelses-bokse én for én.  Men hvad er formålet?  Kunne det ikke opnås på en fiksere og mere begribelig måde?

M.v.h. Jørn
Avatar billede tubber Juniormester
23. juni 2004 - 00:38 #6
Til Joern:

Det han kan kan han godt, jeg bruger det selv i en app. og man behøver ikke alle tallene.......
Jeg kan få det til at fungere hvis det er den markerede item som man skal ha skrevet til en msgbox, men i løkken kan jeg ikke......
Avatar billede angelenglen Nybegynder
23. juni 2004 - 08:16 #7
well som jeg skrev, så ja, det skal være i en løkke.
Det er en liste over ingredienser til en opskrift, som ved tryk på en Commandbutton skal gemmes til Databasen.

Og som tubber siger er det ikke noget problem med de "manglende" tal, begrundelsen for at der er nogen der mangler, er at de tal der er, svarer til min ID for ingrediensen i databasen, således at jeg kan referere til den ud fra list1.itemdata(list1.listindex)

Men der MÅ da være en måde jeg kan flå det tekst ud af den?!
Avatar billede angelenglen Nybegynder
23. juni 2004 - 08:29 #8
okay nu har jeg selv fundet en løsning:

Dim i as Integer
For i = 0 To list1.ListCount - 1 Step 1
    List1.Selected(i) = True
    MsgBox list1.ItemData(i)
Next

Det virker perfekt :)
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