Function TVLister Lparameters toTV Local lnIndex,lnLastIndex _Cliptext='' With toTV lnIndex = .Nodes(1).Root.FirstSibling.Index lnLastIndex = .Nodes(1).Root.LastSibling.Index _GetSubNodes(lnIndex,toTV) Do While lnIndex # lnLastIndex lnIndex = .Nodes(lnIndex).Next.Index _GetSubNodes(lnIndex,toTV) Enddo Endwith Return _Cliptext Function _GetSubNodes Lparameters tnIndex, toTV Local lnIndex, lnLastIndex With toTV WriteNode(tnIndex,toTV) If .Nodes(tnIndex).Children > 0 lnIndex = .Nodes(tnIndex).Child.Index lnLastIndex = .Nodes(tnIndex).Child.LastSibling.Index _GetSubNodes(lnIndex,toTV) Do While lnIndex # lnLastIndex lnIndex = .Nodes(lnIndex).Next.Index _GetSubNodes(lnIndex,toTV) Enddo Endif Endwith Function WriteNode Lparameters tnCurIndex, toTV Local lnRootIndex, lnIndex, lcPrefix, lcKey, lnLevel lnIndex = tnCurIndex With toTV lnRootIndex = .Nodes(lnIndex).Root.Index lcPrefix = '+-' + .Nodes(lnIndex).Text Do While lnIndex # lnRootIndex lnIndex = .Nodes(lnIndex).Parent.Index lcPrefix = Iif(.Nodes(lnIndex).LastSibling.Index = ; lnIndex,' ','|')+Space(3)+lcPrefix Enddo _Cliptext = _Cliptext + lcPrefix + Chr(13) EndwithCetin