Passing values between forms
Example:
The code of button click event of FormA which calls FormB and passes some parameters to that form. <xpp> void clicked()
{
// Args class is usually used in Axapta for passing parameters between forms Args args; FormRun formRun; // Our custom made class for passing complex set of parameters FormBParams formBParams = new FormBParams(); Array items = new Array( Types::String ); int i; ;
args = new args();
// Our values which we want to pass to FormB // If we want pass just simple string we can use 'parm' method of 'Args' class args.parm( strValue.text() ); // We also can pass enum value to FormB args.parmEnum( NoYesEnumValue.selection() ); args.parmEnumType( EnumNum( NoYes ) ); // and also can pass a cursor pointing to some record (in our case it is EmplTable ) args.record( EmplTable );
// If we want pass more complex set of parameters we can develop our own class
// just for passing our parameters.
formBParams.parmSomeDate( someDate.dateValue() );
formBParams.parmSomeTime( someTime.value() );
for( i=0; i<ListBox.items(); i++ )
{
items.value( i+1, ListBox.getText( i ) );
}
formBParams.parmItems( items );
// Pass our object to FormB
args.parmObject( formBParams );
// Run FormB args.name( formstr( FormB ) ); formRun = classFactory.formRunClass( Args ); formRun.init(); formrun.run(); formrun.wait();
if( formrun.closedOk() )
{
answerFromFormB.text( args.parm() );
}
super();
}
</xpp>'The code of init method of FormB <xpp>
public void init()
{
EmplTable emplTableRecord; FormBParams formBParams; Array items; int i; ; super();
// Check for passed arguments
if( element.args() )
{
// get string parameter
strValue.text( element.args().parm() );
// get enum parameter
if( element.args().parmEnumType() == EnumNum( NoYes ) )
{
NoYesEnumValue.selection( element.args().parmEnum() );
}
// get object parameter
if( element.args().parmObject() )
{
formBParams = element.args().parmObject();
items = formBParams.parmItems();
for( i=1; i<=items.lastIndex(); i++ )
{
ListBox.add( items.value(i) );
}
someDate.dateValue( formBParams.parmSomeDate() );
someTime.value( formBParams.parmSomeTime() );
}
// get record parameter
if( element.args().record() && element.args().record().TableId == TableNum( EmplTable ) )
{
emplTableRecord = element.args().record();
emplName.text( emplTableRecord.Name );
}
}
}
</xpp>The code of ok button click event of FromB <xpp>
void clicked()
{
super(); element.args().parm( strAnswer.text() ); element.closeOk();} </xpp>
The above code is cut out from a demo which you can
No comments:
Post a Comment