define class myWizzardSession as session oFirstForm=.f. oSecondForm=.f. oThirdForm=.f. procedure init this.OpenTables() procedure OpenTables use .. use .. procedure ShowForm1 local oForm do form myForm1.scx with this name oForm this.oFirstForm=oForm procedure ShowForm2 local oForm do form myForm2.scx with this name oForm this.oSecondForm=oForm procedure ShowForm3 local oForm do form myForm3.scx with this name oForm this.oThirdForm=oForm procedure DoSomethingOnSecondForm this.oSecondForm.backcolor=rgb(128,128,128) Procedure ShowInterface this.ShowForm1() this.ShowForm2() this.ShowForm3() procedure ReleaseAllForms this.oFirstForm.release() this.oSecondForm.release() this.oThirdForm.release() this.oFirstForm=.f. this.oSecondForm=.f. this.oThirdForm = .f. enddefine **In each Form init (to receive that obj.ref parameter sent by do form command) lParameters oData this.oData=oData &&Stash passed reference to underlying session object in form property (added to form class or ad hoc in form) **Anywhere in any of your forms called this way thisform.oData.DoSomethingOnSecondForm()To call all this;
local oWizzard oWizzard=createobject('myWizzardSession') oWizzard.ShowInterface()Of course forms have to run in default session.