![]() |
virtual treeview: node.parent ist niemals nil
Hallo,
ich habe ein sehr seltsames Problem: Jeder Knoten in meinem VirtualStringTree hat einen Parent Knoten, also auch diejenigen, die ein Nodelevel 0 haben. Hier ein Beispiel: Neues Project --> VirtualStringTree und einen Button aufs Formular. Im Onclick-Ereignis des Button folgenden Code eingefügt:
Delphi-Quellcode:
Die Caption des Formulars ist nach einem Klick auf den Button: 'Level: 0; Parent assigned'
procedure TForm1.Button1Click(Sender: TObject);
var node:PVirtualNode; begin node := vst.AddChild(nil); Caption := 'Level: ' + inttostr(vst.GetNodeLevel(node)); if assigned(node.Parent) then Caption := Caption + '; Parent assigned' else Caption := Caption + '; Parent NOT assigned'; end; Wie kann das sein? Ist meine VirtualTreeview Installation defekt? Sonst hat das eigentlich immer funktioniert. |
Re: virtual treeview: node.parent ist niemals nil
Hast du vielleicht eine neuere Installation auf deinem Rechner als früher? Es kann durchaus sein, dass sich da die interne Logik geändert hat. Das wäre meine erste Vermutung, wenn du sagst, dass es früher scheinbar funktioniert hat.
|
Re: virtual treeview: node.parent ist niemals nil
Ich habe nichts verändert (zumindest nicht bewusst).
Aber den Einträgen hier im Forum zufolge sollte parent NIL sein, wenn der Knoten sich auf oberster Ebene befindet. |
Re: virtual treeview: node.parent ist niemals nil
Ich würde jetzt vermuten, dass das Root-Element (siehe TBaseVirtualTree.FRoot) nun als Parent (statt "nil") eingetragen ist...
|
Re: virtual treeview: node.parent ist niemals nil
@mirage228: du hast recht ;)
Folgender Code schreibt the p-p-p-p-arent in die Titelleiste. Ich habe die neuste Version installiert.
Delphi-Quellcode:
var
vn : PVirtualNode; pn : PVirtualNode; begin VirtualStringTree1.RootNodeCount := 10; vn := VirtualStringTree1.GetFirst(); pn := vn.Parent; if (not Assigned(pn)) then Caption := 'Nüx' else if (pn = VirtualStringTree1.RootNode) then Caption := 'the p-p-p-p-arent' else Caption := 'strange'; end; |
Re: virtual treeview: node.parent ist niemals nil
Ja Mirage228, du hast recht. Die Idee hatte ich auch gerade.
Es ist tatsächlich der (nicht sichtbare) RootNode. Danke. Also sollte man immer beim Hochlaufen in einem Tree immer per NodeLevel oder per parent<>Rootnode prüfen, ob man schon auf oberster Ebene angelangt ist. Gruß, Stefan. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:41 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 by Thomas Breitkreuz