![]() |
VirtualListView / VirtualStringTree - Knoten benötigt Klasse
Hallo,
ich benötige bei einem VirtualStringTree eine Stringlist für jeden einzelnen Knoten. Nun dachte ich, ich könnes es ganz einfach lösen:
Delphi-Quellcode:
Doch diese Variante funktioniert nicht, wo liegt mein Fehler ?
type
PTreeData = ^TTreeData; TTreeData = record fCaption: string; fStringList: TStrings; end; ... function AddVSTStructure(AVST: TCustomVirtualStringTree; ANode: PVirtualNode; ARecord: TTreeData): PVirtualNode; var Data: PTreeData; begin result := AVST.AddChild(ANode); Data := AVST.GetNodeData(result); Avst.ValidateNode(result, false); Data^.fCaption:= ARecord.fCaption; Data^.fStringList:= ARecord.fStringList; end; procedure TForm1.VirtualStringTree1FreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode); var Data: PTreeData; begin Data := VirtualStringTree1.GetNodeData(Node); if Assigned(Data) then begin Data.fCaption := ''; Data.fStringList.Free; end; end; ... // Beispiel aufruf zum Erzeugen eines neuen Eintrags: procedure TForm1.FormCreate(Sender: TObject); var TreeData: TTreeData; pvnode: PVirtualNode; begin pvnode := VirtualStringTree1.RootNode; TreeData.fCaption:= 'Test'; if not Assigned(TreeData.fStringList) then TreeData.fStringList:= TStringlist.Create; TreeData.fStringList.Add('Test1'); AddVSTStructure(VirtualStringTree1, pvnode, TreeData); end; |
Re: VirtualListView / VirtualStringTree - Knoten benötigt Kl
Vielleicht fStringList als TStringList deklarieren?
Moin |
Re: VirtualListView / VirtualStringTree - Knoten benötigt Kl
Das ändert auch nichts, in der Regel deklariert man Stringlisten ja immer als TStrings.
|
Re: VirtualListView / VirtualStringTree - Knoten benötigt Kl
nodedatasize nicht gesetzt?
Delphi-Quellcode:
VirtualStringTree1.NodeDataSize:=SizeOf(TTreeData);
Delphi-Quellcode:
wird bei mir nicht aufgerufen. ggf. mal das if entfernen.
TreeData.fStringList:= TStringlist.Create;
|
Re: VirtualListView / VirtualStringTree - Knoten benötigt Kl
Hallo Christian,
der lokale Record TreeData in der FormCreate-Methode dürfte - abgesehen vom String-Element - nicht initialisiert sein und Zufallswerte enthalten. Die nachfolgende Abfrage mit Assigned() könnte somit fehlschlagen und keine Stringliste erzeugen. Lasse die Abfrage weg, dann sollte es funktionieren. Gruß Hawkeye |
Re: VirtualListView / VirtualStringTree - Knoten benötigt Kl
@generic
Doch NodeDataSize habe ich gesetzt. @Hawkeye Das wars ! Ohne Assigned funktioniert es einwandfrei (oder eben mit nil initialiseren). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz