Как передать параметр между двумя формами в 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 передача значений между формами