RSS
StartseiteKnowledge LibraryTop 10Impressum

5.16 Wie stelle ich mehrere Spalten in einer ListBox dar?

VB5-VB6

Von: Thorsten Dörfler

Mit der ListBox ist es ein aufwändiges Unterfangen mehrere Spalten darzustellen, da diese nicht für die Spaltenweise Darstellung konzipiert wurde. Zwar kann man Spalten darstellen, indem man in einer Zeile entsprechend Tabulatoren einfügt, allerdings müssen dafür auch die Tab-Positionen der ListBox manipuliert werden, weil ja nicht jeder Eintrag in der Liste die gleiche Breite hat. Weitere Informationen dazu unter "Links zum Thema".

Wenn man eine komfortable Listenansicht mit Spalten einsetzen möchte, kann man zum ListView greifen, das in den "Microsoft Windows Common Controls" enthalten ist. Im Report-Modus kann man hier beliebig viele Spalten über die ColumnHeaders- Auflistung hinzufügen. Der Benutzer hat hier dann auch die komfortable Möglichkeit, die Breite der Spalten nach Belieben zu ändern. Braucht man keine Spaltenköpfe, kann man diese auch durch Setzen der HideColumnHeaders-Eigenschaft auf "True" ausblenden.

Folgendes Beispiel erstellt eine Listenansicht mit 3 Spalten und 20 Zeilen:

Dim lListItem As ListItem
Dim l         As Long

With ListView1
  .View = lvwReport
  
  ' Spaltenköpfe einfügen:
  For l = 1 To 3
    .ColumnHeaders.Add , "COL" & CStr(l), "Spalte " & CStr(l)
  Next
  
  ' Einträge hinzufügen:
  For l = 1 To 20
    Set lListItem = .ListItems.Add(, , "Zeile " & CStr(l) & "; Spalte 1")
    lListItem.ListSubItems.Add , , "Zeile " & CStr(l) & "; Spalte 2"
    lListItem.ListSubItems.Add , , "Zeile " & CStr(l) & "; Spalte 3"
  Next
End With

Über die ListItems-Auflistung hat man Zugriff auf die einzelnen Zeilen (ListItem- Objekt) des ListView. So kann man zum Beispiel den Text der 5. Zeile in der ersten Spalte ändern:

ListView1.ListItems(5).Text = "Neuer Text"

Jedes ListItem-Objekt enthält die ListSubItems (SubItems bei den Common Controls 5.0) – Auflistung, über die man die einzelnen Spalten einer Zeile manipulieren kann:

ListView1.ListItems(5).ListSubItems(1).Text = "Neuer Text"

Ändert den Eintrag der zweiten Spalte in der 5. Zeile.

Weiterführende Informationen zum ListView finden Sie in der MSDN.

Links zum Thema