* Program...........: GetMethod.PRG * Author............: Ken R. Levy * Created...........: 10/04/1998 * Description.......: Gets method code GEMPEM() for VFP 6.0 due to product bug in returning * method code at runtime. Supports VCX based classes, not SCX forms. *-- ASCII codes #DEFINE TAB CHR(9) #DEFINE LF CHR(10) #DEFINE CR CHR(13) #DEFINE CR_LF CR+LF LPARAMETERS tvSource,tcMember LOCAL oObject,lcMember,lcCode,lcMethods,lcSearchStr LOCAL lcClass,lcClassLibrary,lnAtPos,lnLastSelect IF NOT INLIST(VARTYPE(tvSource),"O","C") OR (VARTYPE(tcMember)#"C" OR EMPTY(tcMember)) RETURN "" ENDIF lcMember=LOWER(ALLTRIM(tcMember)) IF VARTYPE(tvSource)=="O" oObject=tvSource lcCode=GETPEM(oObject,lcMember) IF NOT EMPTY(lcCode) RETURN lcCode ENDIF lcClass=LOWER(oObject.Class) lcClassLibrary=LOWER(oObject.ClassLibrary) IF EMPTY(lcClassLibrary) RETURN "" ENDIF ELSE IF EMPTY(tvSource) RETURN "" ENDIF lcClass=ALLTRIM(tvSource) lnAtPos=AT(",",lcClass) IF lnAtPos>0 lcClassLibrary=LOWER(ALLTRIM(MLINE(LEFT(lcClass,lnAtPos-1),1))) IF NOT "."$lcClassLibrary lcClassLibrary=lcClassLibrary+".vcx" ENDIF lcClass=LOWER(ALLTRIM(SUBSTR(lcClass,lnAtPos+1))) IF NOT FILE(lcClassLibrary) RETURN "" ENDIF ENDIF ENDIF IF NOT FILE(lcClassLibrary) RETURN .F. ENDIF lnLastSelect=SELECT() SELECT 0 USE (lcClassLibrary) AGAIN SHARED LOCATE FOR LOWER(ALLTRIM(ObjName))==lcClass AND UPPER(ALLTRIM(Platform))=="WINDOWS" IF EOF() OR EMPTY(Methods) USE SELECT (lnLastSelect) RETURN "" ENDIF lcMethods=CR_LF+ALLTRIM(Methods)+CR_LF USE SELECT (lnLastSelect) lcSearchStr=CR_LF+"PROCEDURE "+lcMember+CR lnAtPos=AT(lcSearchStr,lcMethods) IF lnAtPos=0 RETURN "" ENDIF lcCode=SUBSTR(lcMethods,lnAtPos+LEN(lcSearchStr)+1) lcSearchStr=CR_LF+"ENDPROC"+CR_LF lnAtPos=AT(lcSearchStr,lcCode) IF lnAtPos>0 lcCode=LEFT(lcCode,lnAtPos-1) ENDIF RETURN lcCode