Das erste was mir auffällt ist, dass Data normal ein Zeigertyp ist. Also PTreedataclass = ^TTreedataclass -> Data: PTreedataclass.
Hab selbst aber noch nicht mit Klassen im Knoten gearbeitet. Vielleicht stellst du ja auch einfach den Typ um?
Delphi-Quellcode:
type
TTreedataclass=record
imageindex:integer;
test:integer;
FObject : TObject;
end;
PTreedataclass = ^TTreedataclass;
{...}
implementation
{...}
function AddVSTObject(AVST: TCustomVirtualStringTree; ANode: PVirtualNode; AData: TTreedataclass): PVirtualNode;
var Data: PTreedataclass;
begin
Result:=AVST.AddChild(ANode);
// AVST.ValidateNode(Result,False); Wozu?
Data:=AVST.GetNodeData(Result);
Data^ := AData;
end;//
procedure TForm1.Button3Click(Sender: TObject);
var I: Integer; TreeObject: TTreeDataClass;
begin
VST.NodeDataSize:=SizeOf(TTreedataclass);
for I:=1 to 100 do
begin
TreeObject.imageindex:=I-1;// TreeObject.TestInt:=Random(1000);
TreeObject.test:=223;
TreeObject.FObject := TObject.Create;
// TreeObject.FObject ...
AddVSTObject(VST,nil,TreeObject);
end;
end;
{...}
procedure TForm1.VSTGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode;
Kind: TVTImageKind; Column: TColumnIndex; var Ghosted: Boolean;
var ImageIndex: Integer);
var
data : PTreedataclass;
t0:integer;
begin
if column = 0 then
begin
Data:=VST.GetNodeData(Node);
ImageIndex := data^.ImageIndex;
t0:=data^.test;
end else ImageIndex := -1;
end;