Hi Allan
You could return a true/false value from the called form if you want. Use that to determine if the user did anything in the called form. It would just have to be returned to a different variable.
DO FORM myform with m.loParams to m.luReturn
>Mike,
>
>Does the called form need the return ThisForm.MyParms?
>TIA.
>
>>Hi Allan
>>
>>Jim must've made a typo. It's not DO FORM WITH loParm TO loParm. loParm is a parameter object that exists even after the form exists. If you put TO loParm, the return value of the form will replace loParm with the return value of the form.
>>
>>You can read and write the parameters in the parameter object from your form and upon exiting the form, the parameter object has those values.
>>
>>>Jim,
>>>
>>>I tried your suggestion and received an error 'loParam not an object' when I attempted to reference it upon return to the calling program.
>>>
>>>However, if I define a class in my 'set procedure' program and add the object in the calling program based upon that class, I do not get the error. Also, in this case I didn't use the 'return thisform.loParam' in the called program.
>>>
>>>I really appreciate all of the suggestions in this thread.
>>>Thanks once again.
>>>>>Jim,
>>>>>
>>>>>That wouldn't work with local variables would it?
>>>>>I would have to use private?
>>>>>Tks.
>>>>>
>>>>
>>>>Alan,
>>>>
>>>>Passing by reference and variable scoping are tow different things. You could create a private array prior to calling your form and then address that array in the form, but that presents a whole mediad of potential problems.
>>>>
>>>>By far, the best solution ot your probelm is to use a parameter object;
>>>>
>>>>
>>>>
>>>>loParm = CreateObject("Relation")
>>>>loParm.AddProperty("MyArray(1,2)")
>>>>DIMENSION loParm.MyArray(2,3)
>>>>
>>>>FOR lnCnt1 = 1 TO 2
>>>> FOR lnCnt2 = 1 TO 3
>>>> loParm.MayArray(lnCnt1,lnCnt2) = SUBSTR("ABC",LnCnt2,1)
>>>> ENDFOR
>>>>ENDFOR
>>>>
>>>>* For this to work the form must be modal becasue only m odal form's can return values
>>>>DO MyForm WITH loParm TO loParm
>>>>
>>>>* Now loParm has a property named MyArray that has whatever the fomr put there for values.
>>>>
>>>>
>>>>In the form's code;
>>>>
>>>>
>>>>PROCEDURE Init
>>>> LPARAMETERS poParms
>>>> Thisform.AddProperty("MyParms")
>>>> Thisform.MyParms = poParms
>>>>ENDPROC
>>>>
>>>>
>>>>Then within the form you use Thisform.MyParms.MyArray(x,y)
>>>>
>>>>
>>>>PROCEDURE Unload
>>>>RETURN ThisForm.MyParms
>>>>