- 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;
}
}
}