DEFINE CLASS COMOne AS Session OLEPUBLIC oCallback = NULL FUNCTION AddCallback(toCallback AS Object) IF VARTYPE(toCallback) = "O" This.oCallback = toCallback ENDIF ENDFUNC FUNCTION Process LOCAL liCount FOR liCount = 1 TO 10 This.CallbackEvent(liCount) ENDFOR ENDFUNC PROTECTED FUNCTION CallbackEvent(tiCount AS Integer) IF VARTYPE(This.oCallback) = "O" * Assumption is that object supports correct interface * If not, it will throw an exception This.oCallback.OnCallbackEvent(tiCount) ENDIF ENDFUNC ENDDEFINE DEFINE CLASS COMTwo AS Session OLEPUBLIC FUNCTION OnCallbackEvent(tiCount AS Integer) STRTOFILE(TRANSFORM(tiCount) + CHR(13), "C:\TestLog.txt", 1) ENDFUNC ENDDEFINETo run the code:
o = CREATEOBJECT("TestCallback.COMOne") ox = CREATEOBJECT("TestCallback.COMTwo") o.AddCallback(ox) o.Process()To check that it worked:
MODIFY FILE C:\TestLog.txt