Vergiss diesen Record!!
Das vermischt Datenhaltung mit visueller Darstellung, da deine Daten im Control gespeichert werden. Nicht gut.
Ich würde mir eine Datenstruktur überlegen, die zuerst einmal komplett außerhab dem VST stattfindet.
z.B.
Delphi-Quellcode:
TKunde = class
Name : String;
Nr : String;
Objects: TObjectList;
constructor Create; // hier Objects erzeugen
destructor Destroy; Override; // hier Objects freigeben
end;
TKundenObjekt = class
Name : String;
WasAuchImmer: String;
end;
Dann braucht du noch eine ObjectList für die Kunden:
KundenListe : TObjectList;
Vor dem Einlesen der Daten in den VST wird jetzt erstmal diese Datenstruktur gefüllt.
Dein Record für den VST sieht dann so aus:
Delphi-Quellcode:
type
pVSTNodeData = ^rVSTNodeData;
rVSTNodeData = record
Data : TObject;
end;
Dann gehst du die zuvor befüllte KundenListe durch und baust den Inhalt des VST auf:
Delphi-Quellcode:
//for-Schleife Kunden (i)
pNode1 := vstKunden.AddChild(pNode);
Daten := vstKunden.GetNodeDate(pNode1);
Daten^.Data := KundenListe[i];
//for-Schleife Objekte (j) innerhalb der for-Schleife Kunden (i)
pNode2 := vstKunden.AddChild(pNode1);
Daten := vstKunden.GetNodeDate(pNode2);
Daten^.Data:=TKunde(KundenListe[i]).Objects[j]);
Jetzt kennt jeder Node des VST seine relevanten Daten und nur diese. Im OnGetText kannst du dann herausfinden, ob es sich um einen Kudnen oder ein Objekt handelt:
Delphi-Quellcode:
Daten := vstKunden.GetNodeDate(Node);
if Daten^.Data is TKunde then
// Kunde
else
// Objekt