LPARAMETER iNodeIndex LOCAL i, iTempIndex, nChanges, lnLast_Mod, lnSeekVal, oTree, loNode, oParent, lnChildren with Thisform nChanges = 0 oTree = .TList2 oParent = oTree.Nodes(m.iNodeIndex) iTempIndex = m.oParent.Child.FirstSibling.Index .Log("Starting from: " + Descrip, PROGRAM(),1) lnChildren = m.oParent.Children && Total number of children i = 1 *Loop through all Parent's Child Nodes FOR i = 1 to m.lnChildren loNode = oTree.Nodes(m.iTempIndex) *lnSeekVal = val(substr(oTree.Nodes(m.iTempIndex).Key, 3)) lnSeekVal = val(substr(m.loNode.Key, 3)) IF SEEK(m.lnSeekVal,'ItemTree','Node_Id') if sort_order <> m.i .Log("Re-ordering: " + m.loNode.Key + ; ' for parent ' + m.oParent.Key, program(), 1) .Log("Re-ordering item: " + Descrip, PROGRAM(),1) replace sort_order with m.i && re-orders nChanges = m.nChanges + 1 .lUpdateItemTree = .T. endif else .Log("Seek failed on node id:" + m.loNode.Key, program(), 1) endif * If the Node we are on has children, call the Sub again IF loNode.Children > 0 nChanges = m.nChanges + .SaveChild(m.loNode.Index) ENDIF *!* * If we are not on the last child move to the next child Node IF m.i <> m.lnChildren iTempIndex = oTree.Nodes(m.iTempIndex).Next.Index ENDIF ENDFOR ENDWITH return m.nChanges