Hello FPC-Pascal, Wednesday, September 1, 2010, 11:20:57 PM, you wrote:
BA> Just to make my question clear, for example, I can fill a TreeView control with BA> particular Registry keys by enumerating registry keys recursively and put them BA> in the TreeView control; then for performance reason, I attempt to use a BA> nonrecursive/iterative approach to enumerate registry keys, but how can I fill BA> the TreeView since a "tree" is naturally recursive? Is recursion is the only way BA> to achive it? You must know at which node a new node must be inserted, but you can write something like (pseudo code): procedure FillConditional(var ParentNode: TNode); var j: integer; l: TList; n: TNode; begin l:=TList.Create; n:=nil; for j:=0 to xxxx do begin //xxx is some kind of condition n:=TNode.Create; n.position:=j; Tree.AddNode(ParentNode,n); if j=10 then begin l.add(n); //Remember the node at position 10 end; end; for j:=0 to n.Count-1 do begin n:=l.Items[j]; FillConditional(n); end; l.free; end; It is recursive, but first you add all sibliings and them you add each new brach linearly. -- Best regards, José _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal