Avatar billede maagefinke Nybegynder
16. januar 2002 - 21:14 Der er 11 kommentarer og
1 løsning

Kolonner i en listbox

Jeg har brug for at inddele en listbox i 3 kolonner med overskrifterne \"Dato\" \"Tekst\" \"Beløb\". Kan man det? Gerne detaljeret forklaring...
Avatar billede ea_data Nybegynder
16. januar 2002 - 22:09 #1
Opret et modul og indsæt denne kode som du så kan kalde fra din form for at indsætte tabstops i dein listbox:
---------------Modul------------------------
Private Declare Function SendMessage Lib _
    \"user32\" Alias \"SendMessageA\" (ByVal hWnd As _
    Long, ByVal wMsg As Long, ByVal wParam As _
    Long, lParam As Any) As Long
Private Const LB_SETTABSTOPS = &H192

Public Sub SetListTabStops(ListHandle As Long, _
    ParamArray ParmList() As Variant)
    Dim i As Long
    Dim ListTabs() As Long
    Dim NumColumns As Long

    ReDim ListTabs(UBound(ParmList))
    For i = 0 To UBound(ParmList)
        ListTabs(i) = ParmList(i)
    Next i
    NumColumns = UBound(ParmList) + 1

    Call SendMessage(ListHandle, LB_SETTABSTOPS, _
        NumColumns, ListTabs(0))
End Sub

-------------------modul slut--------------------


Eksempel på kald af modulet fra en form med en command1 bottón og en listbox kaldet myListBox:

Private Sub Command1_Click()
\'Call the routine in Form_Load to set the tab stops
\'where MyListBox is the listbox and the tab stop will
\'be around the 12th character. Generally speaking,
\'TabStop divided by four equals roughly the number of
\'characters per column:

\'Call SetListTabStops(lstMyListBox.hWnd, 48)

\'If more columns are needed, simply add them to the
\'function call:
Call SetListTabStops(lstMyListBox.hWnd, 50, 100, 150, 200)
\'Add items to the listbox using vbTab to separate
\'columns:

lstMyListBox.AddItem \"Column1\" & vbTab & \"Column2\" & vbTab & \"Column3\" & vbTab & \"Column4\"

End Sub
Avatar billede jette1 Nybegynder
16. januar 2002 - 22:12 #2
Jeg ved at du skal sætte egenskaben \"Columncount\" til det antal kolonner ListBoxen skal indeholde.
Og så skal du sætte \"ColumnHeads\" til True.

Hvis du har 3 kolonner kan du tildele værdier til én række som følger:

ListBox1.List(0,0) = \"Tekst i kolonne 1, række 1\"
ListBox1.List(0,1) = \"Tekst i kolonne 2, række 1\"
ListBox1.List(0,2) = \"Tekst i kolonne 3, række 1\"

Skal du indsætte flere rækker, er det naturligvis lettes vha. en loop.

Her indsættes 6 rækker:

For i = 0 to 5
    ListBox1.List(i,0) = \"Tekst i kolonne 1, række \" & i
    ListBox1.List(i,1) = \"Tekst i kolonne 2, række \" & i
    ListBox1.List(i,2) = \"Tekst i kolonne 3, række \" & i
Next i

Jeg er imidlertid selv i tvivl om hvordan man får overskrifterne ind.... så jeg følger lige med her og ser om der dukker nogle guldkorn op :-)
Avatar billede jette1 Nybegynder
16. januar 2002 - 22:15 #3
--> ea_data
Er det ikke en besværlig måde at gøre det på? (ikke fordi jeg vil gøre mig klog, da jeg selv er rimelig newbie :-)
Avatar billede ea_data Nybegynder
16. januar 2002 - 22:21 #4
Har du ikke fat i en listview istedet for listbox ??
Avatar billede jette1 Nybegynder
16. januar 2002 - 22:23 #5
Nej, det er helt sikkert en listbox jeg har fat i :-)
Avatar billede jette1 Nybegynder
16. januar 2002 - 22:26 #6
Måske skulle jeg nævne at jeg bruger den i VBA på en formular i forb. med Excel... men der er vel ikke forskel på controlelementerne hvad endten man laver VB eller VBA?
Avatar billede ea_data Nybegynder
16. januar 2002 - 22:32 #7
Så må jeg konstatere at der er en forskel
Avatar billede jette1 Nybegynder
16. januar 2002 - 22:38 #8
Okay :-)
Avatar billede maagefinke Nybegynder
16. januar 2002 - 22:51 #9
>jette1 Jeg har vist ikke de egenskaber til min list, som du nævner, altså columnhead og columncount, og jeg får en \"Wrong number of arguments or in.. property assignment\", når jeg forsøger med den første del af din kode?
>ea Dit virker perfekt, og du er sikret 30 point. Tak! Jeg vil ikke lukke spørgsmålet endnu, hvis der skulle dukke noget op i stil med jette1\'s, der ser besnærende enkelt ud. I givet fald forhøjer jeg blot pointtallet.
Avatar billede jette1 Nybegynder
16. januar 2002 - 23:09 #10
--> maagefinke, desværre er det vidst ikke muligt at udføre en listbox i VB på den måde jeg beskrev. Som ea_data og jeg måtte konstatere, er der tilsyneladende forskel på om man benytter VB eller VBA.
Avatar billede maagefinke Nybegynder
16. januar 2002 - 23:17 #11
>jette1 ListBox1.List(0,0)Det er \".list(0,0)\" som VB gør vrøvl over. Jeg rettede listbox1 til list1, der er vist ikke noget med \"listbox\" i VB?!, men det skulle vel ikke betyde noget?
Avatar billede maagefinke Nybegynder
17. januar 2002 - 11:50 #12
Mange tak, eaData!
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