- als erstes sollte man sich eine Klasse definieren, die die Speicher-Objekte beschreibt (in einer Header-Datei)
class TListItemData { public: // Konstruktor der Klasse TListItemData(){}; // Objektvariablen int iId; AnsiString sName; };
- Um ein Objekt einem Listview-Item zuzuordnen muss man folgendermaßen vorgehen
// Zeiger für das Listitem definieren TListItem *ListItem; // neues Listitem hinzufügen ListItem = ListView->Items->Add(); ListItem->Caption = "Eintrag"; // neues Datenobjekt erzeugen TListItemData *ItemData = new TListItemData(); ItemData->iId = 1; ItemData->sName = "Horst"; // Datenobjekt dem Listitem zuordnen (Zeiger übergeben) ListItem->Data = ItemData;
- Der Zugriff auf ein solches Objekt kann wie folgt realisiert werden
void __fastcall TForm1::ListViewClick(TObject *Sender) { if (ListView->Selected) { TListItemData *TempItem; // Datenzeiger vom akt. Listviewelement holen TempItem = (TListItemData*)ListView->Items->Item[i]->Data; // Wenn ein gültiger Zeiger vorhanden (!= NULL) if (TempItem) { Label1->Text = IntToStr(ItemData->iId); Label2->Text = ItemData->sName; } else // sonst Fehlermeldung { ShowMessage("Objekt nicht verfügbar!"); } } }
- naturlich darf man das Löschen der so zugewiesenen Speicherobjekte nicht vergessen, dazu dient folgende Funktion
void __fastcall TForm1::DeleteAllItemData() { TListItemData *TempItem; // Alle Items->Data des Listviews löschen for (int i=0; i<ListView->Items->Count; i++) { // Zeiger auf das akt. ListItem->Data->Objekt holen TempItem = (TListItemData*)ListView->Items->Item[i]->Data; if (TempItem) { // alle Zeiger und Objekte löschen ListView->Items->Item[i]->Data=NULL; delete TempItem; TempItem = NULL; } } }