Avatar billede Kim Neesgaard Seniormester
14. februar 2004 - 15:28 Der er 12 kommentarer og
2 løsninger

Listbox med flere kolonner

Man fylder en listbox med een kolonne sådan:

Listbox.AddItem "X"

men hvis man sætter Columns = 2, fordi man gerne vil have listboxen fyldt med 2 rækker, der står 'pænt', så kunne jeg tro, at man skulle skrive

Listbox.AddItem "X", "Y"

men den går ikke og jeg kan ikke finde det i hjælpen. Kan nogen hjælpe?
Avatar billede kabbak Professor
14. februar 2004 - 16:39 #1
der er en fra hjælpen her


Private Sub CommandButton1_Click()

ListBox1.ColumnCount = 3

ListBox1.AddItem "Row 1, Col 1"
ListBox1.List(0, 1) = "Row 1, Col 2"
ListBox1.List(0, 2) = "Row 1, Col 3"

ListBox1.AddItem "Row 2, Col 1"
ListBox1.List(1, 1) = "Row 2, Col 2"
ListBox1.List(1, 2) = "Row 2, Col 3"

ListBox1.AddItem "Row 3, Col 1"
ListBox1.List(2, 1) = "Row 3, Col 2"
ListBox1.List(2, 2) = "Row 3, Col 3"

ListBox1.TextColumn = 3
End Sub
Avatar billede kabbak Professor
14. februar 2004 - 16:47 #2
ListBox1.ColumnCount = 3        ' fortæller hvor mange kolonner der skal være
ListBox1.AddItem "Row 1, Col 1" ' Sætter ind i første kolonne
ListBox1.List(0, 1) = "Row 1, Col 2" ' sætter ind i anden kolonne osv.
Avatar billede Kim Neesgaard Seniormester
14. februar 2004 - 16:54 #3
Hvis jeg bruger eksemplet direkte (selvfølgelig med min egen listbox´es navn), får jeg følgende besked:

Run-time error 450
Wrong number of arguments or invalid property assignment

ved lb.List(0, 1) = "Row 1, Col 2"?

(Hvad slår du om under i hjælpen for at få dette eksempel?)
Avatar billede kabbak Professor
14. februar 2004 - 17:15 #4
ok jeg tjekkede i excel der bruger man ListBoxe
i vb bruger man List

så det er vel i vb du spørger
Avatar billede kabbak Professor
14. februar 2004 - 17:48 #5
Har lige testet.

Det antal kolonner du sætter den til, udfylder den selv, når den ene kolonne er fuld i højden, fortsættes på den næste.


  List1.AddItem "Paris"
  List1.AddItem "New Orleans"
  List1.AddItem "San Francisco"
  List1.AddItem "Chicago"
  List1.AddItem "Seattle"
  List1.AddItem "Toronto"
  List1.AddItem "New York"
  List1.AddItem "Tbilisi"
  List1.AddItem "Moscow"
  List1.AddItem "Portland"
Avatar billede Kim Neesgaard Seniormester
14. februar 2004 - 18:08 #6
Ja - jeg bruger VB6.

Men jeg ønsker oplysningerne parvis ud og derved gøre listningen uafhængig af selve størrelsen på listboxen. Det skulle helst stå således:

Peter        Blikkenslager
Benjamin      Tømrer
Bo            Direktør
og så tomt til listboxen slutter
Avatar billede kabbak Professor
14. februar 2004 - 18:11 #7
hvor får du dataerne fra ? excell, access eller ?
Avatar billede Kim Neesgaard Seniormester
14. februar 2004 - 18:37 #8
En recordset lavet på basis af en Accesstabel.
Avatar billede kabbak Professor
14. februar 2004 - 18:56 #9
Dette er hentet fra hjælp, mon ikke du kan lure det af.

Jeg troede at en listbox var en listbox, men der er stor forskel mellem excel og vb6, på måden man får flere data i kolonner.

'-------------------------------------------------------

Start Visual Basic.
Place a RemoteData control on Form1.
Add a reference to RDO through the References command on the Project menu.
Add the following code to the Form

Private Sub Command1_Click()
Dim x As New rdoConnection
Dim y As rdoQuery
x.Connect = "DSN=Union;database=rdobugs;UID=rdo;PWD="
  x.EstablishConnection
Set y = x.CreateQuery("Query1", "SELECT * FROM authors ")
y.CursorType = rdOpenKeyset
y.LockType = rdConcurRowVer
x.Query1
Set MSRDC1.Resultset = x.LastQueryResults

Set List1.DataSource = MSRDC1 ' din listbox

End Sub
Avatar billede Kim Neesgaard Seniormester
14. februar 2004 - 19:03 #10
I dit eksempel er det da MSRDC1, de er recordsettet? Hvis ja, får jeg ikke vist noget i listboxen, men får heller ingen fejlmelding.
Avatar billede kabbak Professor
14. februar 2004 - 23:46 #11
Hej, tilføj et komponentet Microsoft forms 2.0 object library

Brug listbox derfra , det er den samme som i vba.

Du udskifter 'data' med variablen der indeholder dit udtræk, og husk at sætte antal colums, til det antal kolonner du udtrækker.

her er et eksempel

Private Sub Command1_Click()
Dim data(10, 2) As Variant
ListBox1.ColumnCount = 2
For x = 0 To 10
data(x, 0) = x
data(x, 1) = x * 100
Next
ListBox1.List = data
End Sub
Avatar billede kristoffer_o Nybegynder
17. februar 2004 - 11:06 #12
Hvorfor bruger du ikke et Listview i stedet for? Listbox'en er - så vidt jeg har forstået - velegnet i forbindelse med recordsets, tabeller mv.

I din form, indsæt et Listviev du kalder Listview1 og se på nedenstående kode. Det kan være du skal sætte en reference til Microsoft Windows Common Controls 6.0 under Project->Components Controls, for at få et listview objekt i din toolbox

Private Sub Form_Load()

Dim itm As ListItem

  With ListView1
      .ListItems.Clear
      .ColumnHeaders.Add , , "Navn"
      .ColumnHeaders.Add , , "Kompetence"
      .View = lvwReport
  End With

Set itm = ListView1.ListItems.Add(, , "Peter")
itm.SubItems(1) = "Tømrer"

end sub
Avatar billede Kim Neesgaard Seniormester
25. februar 2004 - 18:02 #13
kristoffer_o -> det var lige det, jeg søgte!
kabbak -> mange tak for din vedholdende hjælp - jeg fordeler point
Avatar billede Kim Neesgaard Seniormester
25. februar 2004 - 21:47 #14
Et lille tillægsspørgsmål: hvordan justerer man bredden af kolonnerne?
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