12.08.2010, 08:17 | #1 |
Иван Захаров
|
Расширенные возможности отслеживания событий на диалогах классов-наследников RunBase
В AX2009 RU5 появилась возможность простого расширения возможностей отслеживания событий на диалогах классов-наследников RunBase.
Поясню как это использовать (на примере InventBaileeCreateCalc_RU): 1. Добавляем в classDeclaration следующую конструкцию: X++: CustAccount custAccount;
DialogField dialogCustAccount;
#define.dialogCustAccount('dialogCustAccount') 2. В метод dialog() добавляем вызов ещё пары методов: X++: ... dialog.customFieldName_RU(#dialogCustAccount); // здесь насильно устанавливаем название создаваемого контрола в форме диалога dialogCustAccount = dialog.addFieldValue(typeid(CustAccount), custAccount); ... dialog.allowControlMethodOverload_RU(true); // а теперь разрешаем инстансу настоящего класса отлавливать события контролов 3. Теперь создаём метод dialogCustAccount_modified(), который позволяет отлавливать события контрола с названием 'dialogCustAccount' (если бы мы не изменяли название контрола, то метод бы назвался Fld1_modified, или Fld3_2 - взависимости от того где и как вы вызываете dialog.addField или dialog.addFieldValue) Примечание: Поля-массивы (Dimension) будут иметь наименование с суффиксом содержащим номер элемента массива. Пример: dialogDimension_1, dialogDimension_2, ... Очень важное примечание: поскольку в этом методе вы имеете дело с серверной версией класса Dialog, то для корректной работы нужно не забывать обновлять значения полей "обрамляющим" вызовом методов updateServer() и updateClient()) X++: protected boolean dialogCustAccount_modified() { boolean ret = dialog.curFormControl_RU().modified(); ; dialog.dialogOnClient_RU().updateServer(); dialogContractCode.value(''); dialogContractAccount.value(''); this.dialogActivateFields(); dialog.updateClient(dialog.dialogOnClient_RU()); return ret; } Таким же точно образом можно отслеживать методы lookup(), validate(), selectionChange() и др... P.S. Собственно изначально делал это в AX3, а теперь удалось получить это в рамках RU5. Пользуйтесь на здоровье! |
|
|
За это сообщение автора поблагодарили: db (3), sukhanchik (5), gefr (1), konopello (2), MikeR (1), gl00mie (3), alex55 (1), jeky (1), imir (1). |
Теги |
ax2009, dialog, законченный пример, полезное |
|
|