* OpenAllMethods.prg 08-Aug-02 >> >>* this function opens all overridden methods >> >>local laJunk[1], loOutermost >> >>set step on >> >>=aselobj(laJunk,1) >> >>* filename, [classname] needed inside recursive function >> >>private lcFile, lcClass >> >>lcFile = upper( sys( 1271, laJunk[1] ) ) >> >>* find the outermost object >> >>loOutermost = laJunk[1] >> >>if ( "VCX" $ lcFile ) >> do while ( ( type( "loOutermost.parent" ) == "O" ) and ; >> ( type( "loOutermost.parent.parent.parent" ) == "O" ) ) >> loOutermost = loOutermost.parent >> enddo >> lcClass = loOutermost.Name >>else >> do while ( type( "loOutermost.parent" ) == "O" ) >> loOutermost = loOutermost.parent >> enddo >>endif >> >>DrillDown( loOutermost ) >>return >> >>function DrillDown( loObject ) >> >>* find the full containership name >> >>local lcObjectName, loFullname >> >>lcObjectName = "" >>loFullname = loObject >>do while ( type( "loFullname.parent" ) = "O" ) >> lcObjectName = loFullname.Name + "." + lcObjectName >> loFullname = loFullname.parent >>enddo >> >>* strip off the outermost container >> >>lcObjectName = substr( lcObjectName, at( '.', lcObjectName ) + 1 ) >> >>local i, n, laMembers[1], lcMethod >> >>n = amembers( laMembers, loObject, 1, 'C' ) >> >>for i = 1 to n >> if ( laMembers[i,2] $ "Method Event" ) >> lcMethod = lcObjectName + laMembers[i,1] >>* debugout ">" + lcMethod + "<" >> if ( ".SCX" $ lcFile ) >> modify form (lcFile) nowait method &lcMethod >> else >> modify class (lcClass) of (lcFile) nowait method &lcMethod >> endif >> endif >>endfor >> >>* process contained objects >> >>n = amembers( laMembers, loObject, 2 ) >> >>for i = 1 to n >> DrillDown( evaluate( "loObject." + laMembers[i] ) ) >>endfor >> >>return