Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by Hawkeye219,
23. Feb 2008
Peter, ersetze einmal die Aufrufe von InvalidateNode durch Aufrufe von ReinitNode:
// VST.InvalidateNode (Node1);
VST.ReinitNode (Node1, False);
Du solltest dir auch überlegen, ob es sinnvoll ist, Kopien der bereits im Speicher befindlichen Daten in den Baum zu stecken. Wäre es nicht einfacher, einen Verweis in den Knoten abzulegen und über diesen bei Bedarf auf die Daten zuzugreifen?
...
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by Hawkeye219,
23. Feb 2008
Hallo sakura,
Das ist eigentlich die Aufgabe von Finalize:
Ich vermute eher, dass das OnFreeNode-Ereignis nicht für alle Baumknoten ausgelöst wird, weil einige Knoten niemals angezeigt wurden. In diesem Fall hilft die oben erwähnte Methode InvalidateNode, die unter anderem den Knoten als "initialisiert" markiert und somit dafür sorgt, dass für den betreffenden Knoten ein...
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by Hawkeye219,
23. Feb 2008
Hallo Peter,
du solltest auf jeden Fall das Ereignis OnFreeNode behandeln und dort durch einen Aufruf von Finalize die Freigabe des Speichers veranlassen, etwa so:
procedure TForm1.VSTreeNode (Sender: TBaseVirtualTree; Node: PVirtualNode);
var
NodeData : PTreeData;
begin
NodeData := Sender.GetNodeData(Node);