>PRIVATE goApp >LOCAL loForm1, loForm2, loRef >goApp = CREATEOBJECT('AppManager') >loForm1 = CREATEOBJECT("_Form") >loForm1.Name = "MyForm1" >loForm2 = CREATEOBJECT("_Form") >loForm2.Name = "MyForm2" >loRef = goApp.GetFormObjectRef(loForm2.Name) >RETURN > >DEFINE CLASS _Form AS Form > PROCEDURE Init > goApp.Add2FormList(THIS) > ENDPROC >ENDDEFINE >DEFINE CLASS AppManager AS CUSTOM > > ADD OBJECT FormList AS Collection > > PROCEDURE Add2FormList > LPARAMETERS toForm > IF TYPE('toForm') <> 'O' > RETURN .f. > ENDIF > IF UPPER(toForm.BaseClass) <> [FORM] > RETURN .f. > ENDIF > LOCAL lcHWND > lcHWND = TRANSFORM(toForm.HWND) > THIS.FormList.Add(toForm, TRANSFORM(toForm.HWND)) > ENDPROC > PROCEDURE GetFormObjectRef > LPARAMETERS tcName > tcName = ALLTRIM(UPPER(tcName)) > LOCAL llFound, loForm > FOR EACH loForm IN THIS.FormList > IF UPPER(loForm.NAME) == tcName AND UPPER(loForm.BASECLASS) = 'FORM' > llFound = .T. > *!* BAM! As soon as the next line executes, > *!* loForm is no longer an object! > EXIT > ENDIF > ENDFOR > IF llFound AND VARTYPE(loForm) <> "O" > MESSAGEBOX("loForm is no longer an object!",16,"ERROR!") > loForm = .NULL. > ENDIF > RETURN loForm > ENDPROC >ENDDEFINEMark,