Как передать параметр между двумя формами в Axapta?
Как я могу передать один параметр между формой в axapta ? Я хочу запустить форму B Из события нажатой кнопки в форме A и передать... например, идентификатор клиента ? Как я могу прочитать его в форме назначения, возможно, в init способ ? Спасибо
1 ответов
1 способ
самый простой способ-передать текущую запись. Просто измените значение источника данных элемента управления button, например, на CustTable, если CustTable находится в текущих источниках данных формы. Затем в целевой форме init метод:
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();
}
затем в пункт назначения форма инициализации:
public void init()
{
str anyStringValueFromCaller;
;
super();
// Check for passed arguments
if( element.args() )
{
// get string parameter
anyStringValueFromCaller = element.args().parm();
}
}
Я определенно должен был бы использовать только первый метод и только в особых обстоятельствах пошел бы с методом #2 с переопределением метода нажатия кнопки, потому что это один из шаблонов по умолчанию для передачи значений между формами. Более сложный пример доступен по адресуAxaptaPedia.com передача значений между формами