Как передать параметр между двумя формами в Axapta?

Как я могу передать один параметр между формой в axapta? Я хочу запустить форму B из события нажатия кнопки в форме A и передать... например, идентификатор клиента? Как я могу прочитать его в форме назначения, может быть, в методе init? Спасибо


person stighy    schedule 29.06.2012    source источник


Ответы (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 Передача значений между формами

person vukis    schedule 29.06.2012