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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.09.2016, 16:39   #1  
Start is offline
Start
Участник
 
39 / 9 (1) +
Регистрация: 21.07.2015
Адрес: Москва
InteractionClass
Здравствуйте!

Подскажите как перекрыть метод для кнопки на форме в привязанном InteractionClass ?
помимо super() необходимо дописать в него еще один оператор.
Старый 06.09.2016, 21:11   #2  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Поставьте кнопке свойство отображения только на клиенте, не помню как точно свойство называется (Target=Client ?), тогда можно перекрыть.
За это сообщение автора поблагодарили: AvrDen (1).
Старый 07.09.2016, 08:00   #3  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Наверное InteractionClass тут не поможет. Лучший вариант вместо просто Button использовать MenuItemButton.
Старый 01.10.2016, 12:22   #4  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
Приветствую!

Можно попробовать следующее:

Создайте новый метод в своём Interaction классе, который выполнится вместо оригинального метода clicked():
X++:
void info1(FormButtonControl _formButtonControl)
{    
    _formButtonControl.clicked(); // super()
    
    info('1'); // some code added just for example
}
В этом методе вы можете выполнить super() вызвав оригинальный не перекрытый метод clicked()
X++:
_formButtonControl.clicked();
Также можете добавить свой код куда необходимо.

После этого на initialized() методе Interaction класса написать что-то вроде:

X++:
Common         externalRecord;
FormDataSource formDS;
FormRun        formRun;
FormButtonControl  formButtonControl;

super();

externalRecord = this.listPage().activeRecord(identifierStr(<YourDSName>));

if(externalRecord.isFormDataSource())
{
    formDs   = externalRecord.dataSource();
    formRun = formDs.formRun();

    if (formRun)
    {
        formButtonControl = formRun.design().controlName(formControlStr(<YourFormName>,<YourButtonControlName>));

        if(formButtonControl)
        {
            formButtonControl.registerOverrideMethod(
                methodStr(FormButtonControl,clicked), // метод кнопки, который хотите перекрыть
                methodStr(<YourClassInterationName>, info1),          // метод, который будет вызван
                this);                 // экземпляр класса, который содержит указанный выше метод[
        }
    }
}

Последний раз редактировалось Cardagant; 01.10.2016 в 12:29.
Старый 01.10.2016, 21:51   #5  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Зачем такие сложности? Ваш код на портале все равно работать не будет, а раз так - то ставим кнопке свойство, отображаться только в клиенте, и система спокойно позволяет перекрывать clicked(). Еще можно из одной кнопки сделать две - одну отображать на портале, как стандартнную, а другую тольуо для клиента, с перекрытым clicked().
 


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

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

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