******************************** ******************************** DEFINE CLASS Singleton AS Custom ******************************** ******************************** ************* FUNCTION Init ************* LPARAMETERS oMyObject oMyObject = THIS.GetExistingInstance() IF ISNULL(oMyObject) THIS.Initiate() oMyObject=THIS ELSE RETURN .F. ENDIF ENDFUNC * EOF(Init) ***************** FUNCTION Initiate ***************** ENDFUNC ************************************** PROTECTED FUNCTION GetExistingInstance ************************************** LOCAL loReturn,lcClassSeft,lnClassInst LOCAL ARRAY laClassInst[1] loReturn = .NULL. lcClass = This.Class lnClassInst = AINSTANCE(laClassInst, lcClass) IF lnClassInst > 0 lcVarName=laClassInst[1] loReturn = &lcVarName ENDIF RETURN loReturn ENDFUNC * EOF(GetExistingInstance) ********* ********* ENDDEFINE ********* ********* * EOF(Classe Singleton) ********************* FUNCTION GetSingleton ********************* LPARAMETERS cClassName LOCAL loResult AS Singleton IF EMPTY(cClassName) cClassName="Singleton" ENDIF CREATEOBJECT(cClassName,@loResult) RETURN loResult ENDFUNC * EOF(GetSingleton)