AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.12.2008, 06:47   #13  
petergunn is offline
petergunn
Участник
 
118 / 279 (10) ++++++
Регистрация: 30.08.2005
Адрес: Tyumen
Цитата:
Сообщение от HorrR Посмотреть сообщение
Так что пока что весьма грустно получается. Прийдется развешивать GotFocus"ы по контроллам.
Немного модифицировал предложенный вчера вариант. Попробуйте такой сценарий:
Содаем на форме метод
X++:
//  --> get last active formDataSource
int getControlDataSourceId( FormControl _formControl = element.selectedControl() )
{
    Object          object = _formControl   ;
    SysDictClass    sysDictClass    ;
    int             dataSourceId    ;
    ;

    if( !_formControl )
        return 0 ;

    sysDictClass = new SysDictClass( classidget( object ) ) ;
    if( !sysDictClass.hasObjectMethod( identifierstr( DataSource ) ) )
        return 0 ;

    dataSourceId = object.dataSource() ;
    return dataSourceId ;
}
//  <-- get last active formDataSource
В classDeclaration заводим переменную для хранения id последнего источника данных:
X++:
public class FormRun extends ObjectRun
{
    ...
    //  --> get last active formDataSource
    int     lastDataSourceId        ;
    //  <-- get last active formDataSource
}
перекрываем на форме метод selectControl:
X++:
public boolean selectControl(FormControl _control)
{
    boolean ret ;
    //  --> get last active formDataSource
    int     dataSourceId = element.getControlDataSourceId( element.selectedControl() ) ;

    if( dataSourceId )
        lastDataSourceId = dataSourceId ;
    //  <-- get last active formDataSource

    ret = super(_control);
    return ret;
}
По клику на кнопке остается только проанализировать значение lastDataSourceId:
X++:
void clicked()
{
    ...
    //  --> get last active formDataSource
    switch( lastDataSourceId )
    {
        case <Table1>_ds.id() :
            // TODO: код для источника данных <Table1>_ds
            // info( <Table1>_ds.name() ) ;
            break ;
        case <Table2>_ds.id() :
            // TODO: код для источника данных <Table2>_ds
            // info( <Table2>_ds.name() ) ;
            break ;
        case <Table3>_ds.id() :
            // info( <Table3>_ds.name() ) ;
            break ;
        default:
            break ;
    }
    //  <-- get last active formDataSource
}
За это сообщение автора поблагодарили: Poleax (1), Sergey Petrov (1).
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 06:31.