*/ Create an object base on a line control */ could be anything, even a custom class of your own oMyParm = createobject( "line" ) with oMyParm .AddProperty( "MyArray[1,1]") .AddProperty( "My2ndArray[1,1]" ) dimension .MyArray[ 5, 3 ] && or whatever dimensions... dimension .My2ndArray[ 2,4] && or whatever .AddProperty( "nSomeNumber" ) .nSomeNumber = 123 .AddProperty( "dSomeDate" ) .dSomeDate = ctod( "4/14/2005" ) .AddProperty( "nReturnStatus" ) .nReturnStatus = 0 endwithThen, you can call your form with one parameter...
do form YourForm with oMyParmIn the INIT of the form, you can store this object reference in the form and have it available for the entire duration of the form, set values upon return and everything can get passed back...
*/ In the INIT() of the form lparameters oYourParmObject Thisform.AddPropery( "oHoldObject" ) Thisform.oHoldObject = oYourParmObject
*/ In the UNLOAD event, put whatever you want back in */ the object but be sure to release the object pointer */ as held in the form when done or the form wont release WITH Thisform.oHoldProperty dimension .MyArray[ 1, 2] && or whatever the result would be... dimension .My2ndArray[ 3,3] && or whatever redefinition you need .nSomeNumber = 456 .dSomeDate = date() + 20 && or anything from the form... .nReturnStatus = 1 && or whatever status codes you may want ENDWITH */ Clear before release Thisform.oHoldProperty = NULLThen, after the form is done, you can check ANY of the properties, statuses, array changes, etc you need...
*/ After your "do form YourForm with oMyParm" near the top... if oMyParm.nReturnStatus = 1 ... ... if oMyParm.MyArray... ... ...Hope this opens the door to some extensive parameter passing to/from for you.