Ich versuche gerade, ein TStrings-Objekt in der Data-Eigenschaft eines TTreeNode zu speichern. Der Sinn ist, dass beim Selektieren des TreeNodes im TTreeView das TStrings-Objekt in einer Listbox angezeigt werden soll. Die Daten sollen erst ins TreeNode geschrieben werden,
nachdem es erstellt wurde, also scheidet AddObject aus. Was ich jetzt versucht habe, ist abzufragen, ob bereits Datenn zu dem TreeNode gehören. Wenn nein, werden die Daten dem TreeNode zugeordnet, wenn ja, werden diese Daten in der Listbox dargestellt. Leider hab ich letzteres noch nicht hingekriegt, und ersteres kann ich aus dem selben Grund schlecht überprüfen.
Folgenden Code hab ich:
Delphi-Quellcode:
procedure TMainForm.files_ausgabeChange(Sender: TObject; Node: TTreeNode);
var
UsedFunctions: TStringList;
type
PStrings = ^TStrings;
begin
//nur anfangen, falls Element auf der letzten Ebene
if not Node.HasChildren then
begin
//falls keine Daten gespeichert sind
if Node.Data = nil then
begin
//GetUsedFunctions liefert TStringList-Wert
UsedFunctions := GetUsedFunctions(Node.Parent.Text,Node.Text,DefFunctionsList);
Node.Data := @UsedFunctions;
//used_ausgabe ist eine ListBox
used_ausgabe.Items.AddStrings(UsedFunctions);
end
//die Daten sollen ausgelesen werden -> hier haperts
else used_ausgabe.Items.AddStrings(TStrings(Node.Data^).Strings); //<--
end
else used_ausgabe.Clear;
end;