* Caller form - consider it has some custom properties thisform.cCustom = "noinit" do form frmCalled with thisform * If modeless * do form frmCalled with thisform name "myCalledForm" * so caller also could access called's PEM *Called form - has a property oCaller holding caller's reference * init lparameters toForm with this .oCaller = toForm *.... * If lCannotInit * return .f. * else * .oCaller.cCustom = "inited" * endif endwith * Any method, event of any control could do these with thisform.oCaller .dSelectedDate = dSomeDate && Modify properties in caller .txtCustomerName.value = "John Smith" .myGrid.clmCountry.Text1.value = "Turkey" .GetCustomerData() && Call a method of caller .refresh() && Refresh caller .RemoveObject("SomeControl") .Show() && Make it active one endwithCetin