>LPARAMETERS pcParent, pcDir >* pcParent is the parent directory and pcDir is the directory to be read for other directories >* First we increment the recusion counter >IF EMPTY(pcDir) > pcDir = "" >ENDIF >lnRecurse = lnRecurse + 1 >IF lnRecurse > 20 > * If we are more than 20 levels of recursion deep > * Decrement the recursion counter > lnRecurse = lnRecurse - 1 > * If there is a parent cd back to it > IF NOT EMPTY( pcParent ) > CD .. > ENDIF > * Get out of here well before we blow up > RETURN >ENDIF >* Declare locals >LOCAL laDirs(1,1), lcParent, lcName, lnCount, lcDir, lcCurDir, ; > laFiles(1), lnGotOne >* If there is a parent >IF NOT EMPTY( pcParent ) > IF EMPTY( pcDir ) > * Set lcDir to the current directory > lcDir = RIGHT(CURDIR(),RAT("\",CURDIR())+1) > ELSE > * Set lcDir to the users selected directory > lcDir = pcDir &&RIGHT(pcDir,RAT("\",pcDir)+1) > ENDIF > CD "&pcDir" >ELSE > * If there is no parent we are starting with the first directory > * We will truncate this dirs name and put the actual path in the > * RootOfDir property of the form > lcCurDir = IIF(EMPTY(pcDir),CURDIR(),pcDir) > THIS.RootOfDir = lcCurDir > * Now truncate the directory name > IF LEN(lcCurDir) > 45 > lcDir = "... " + RIGHT(RIGHT(lcCurDir,RAT("\",lcCurDir)+1),45) > ELSE > lcDir = lcCurDir > ENDIF > * Set up the node name > lcName = lcDir+ALLTRIM(STR(lnRecurse,3)) > * Add the node to the treeview > THISFORM.PageFrame1.Page1.OleControl1.Object.Nodes.add(,1,lcName, lcDir,0) > * We are now on our way out so decrement the recusion counter > lnRecurse = lnRecurse - 1 > * This code is processing the root of the tree so we simply return > * out of here > RETURN >ENDIF > >* If we are below the first level, get a list of dirs in this dir >ADIR(laDirs,"","D") >IF TYPE( "laDirs(1,1)" ) <> "C" > * If we have no directories > * Decrement the recursion counter > lnRecurse = lnRecurse - 1 > IF NOT EMPTY( pcParent ) > * If there is a parent for this dir switch to it > CD .. > ENDIF >ENDIF >* We are done so restore the dir >IF NOT EMPTY( pcParent ) > CD .. >ENDIF >* Decrement the recursion counter >lnRecurse = lnRecurse - 1 >* Get out of here >RETURN >