Wie Du auf Listviews zugreifen kannst scheint Dir ja klar zu sein. Um ListItems zu erstellen benutze den Code von Arakis.
Im folgenden gehe ich davon aus, daß ListItem ein gültiger Listeneintrag ist.
Subitems werden in der Eigenschaft Subitems vom Listeneintrag gespeichert. Diese Eigenschaft ist ein TStrings Nachfahre. Vom Handling vergleichbar mit der Lines Eigenschaft von Memofeldern. Damit die Untereigenschaften angezeigt werden mußt Du
ListView.ViewStyle auf
vsReport setzen.
Doch nun zum Code.
Um Untereigenschaften zu erstellen verwende die
Add Methode von TStrings und übergebe den Text als Parameter von
Add. Beachte: Untereigenschaften können nur Strings sein! Dir steht allerdings natürlich frei die Werte hin und her zu konvertieren, wie z.B. von String nach Integer und umgekehrt.
Du kannst auch jedem Untereintrag ein Objekt über
AddObject zuweisen. Näheres findest dazu in der Delphi Hilfe zu
TStrings bzw
TStringlist. Somit kann der String nur die Darstellung des Objektes sein. Ändert sich das Objekt - änderst Du auch den String (manuell).
Die Stringliste
Subitems wird vom Listenobjekt automatisch erstellt - darum brauchst Du Dich nicht zu kümmern.
Um auf die Subitems zugreifen zu können greifst Du einfach arraylike per eckigen Klammern auf die Zeilen der Stringlist zu.
ListItem.SubItems[0] greift also auf die erste Untereigenschaft zu,
ListItems.SubItems[1] auf die Zweite, usw.
Hierbei ist aber zu beachten, daß Du nicht davon ausgehen darfst, daß Untereigenschaften existieren. Bevor Du also direkt auf Untereigenschaften zugreifst solltest Du immer erst prüfen ob die Eigenschaft existiert, und zwar nach folgendem Schema (SubItemIndex ist der Index der Untereigenschaft):
Quelltext
1: 2:
| if SubItemIndex<ListItems.Subitems.count then ProcessSubItem(ListItems.Subitems[SubItemIndex]); |
Der Grund ist eigentlich einfach: Bei TListView müssen nicht alle Untereinträge wirklich existieren. Ebenso kann auch ein Untereintrag leer sein. Verwende dazu einfach
Quelltext
1:
| ListView.Subitems.Add(''); |
Noch ein letzter Tipp wenn Du die Einträge OnTheFly erstellen möchtest: Benutze
ListView.Items.BeginUpdate und
ListView.Items.EndUpdate, damit unterbindest Du das sofortige Neuzeichnen wenn sich ein Eintrag ändert.