Как я могу передать один параметр между формой в axapta? Я хочу запустить форму B из события нажатия кнопки в форме A и передать... например, идентификатор клиента? Как я могу прочитать его в форме назначения, может быть, в методе init? Спасибо
Как передать параметр между двумя формами в Axapta?
Ответы (1)
1 Метод
Самый простой способ - передать текущую запись. Просто измените значение DataSource элемента управления кнопки для примера на CustTable, если CustTable находится в текущих источниках данных формы. Затем в методе инициализации формы назначения:
public void init()
{
CustTable cTable;
;
super();
// Check for passed arguments
if( element.args() )
{
// get record parameter
if( element.args().record() && element.args().record().TableId == TableNum( CustTable ) )
{
cTable = element.args().record();
}
}
}
2 Метод
Если вам все еще нужно передать ровно одно значение .parm() (или более сложный объект .parmObject() ), вы можете сделать это, переопределив метод нажатия кнопки исходной формы:
void clicked()
{
// Args class is usually used in Axapta for passing parameters between forms
Args args;
FormRun formRun;
;
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( "anyStringValue" );
// Run FormB
args.name( formstr( FormB ) );
formRun = classFactory.formRunClass( Args );
formRun.init();
formrun.run();
formrun.wait();
super();
}
Затем в форме назначения init:
public void init()
{
str anyStringValueFromCaller;
;
super();
// Check for passed arguments
if( element.args() )
{
// get string parameter
anyStringValueFromCaller = element.args().parm();
}
}
Я определенно должен использовать только первый метод и только в особых обстоятельствах использовать метод № 2 с переопределением метода нажатия кнопки, потому что это один из шаблонов по умолчанию для передачи значений между формами. Более сложный пример доступен на AxaptaPedia.com Передача значений между формами