08.05.2008, 16:32 | #1 |
MCTS
|
Обработка jumpRef в Dialog
Создается Dialog, на котором динамически создаются контролы.
Нужно, чтобы у контрола в контекстном меню был пункт "Перейти к форме основной таблицы". Динамически перегрузил метод jumpRef() создав в классе метод: X++: public void dfDistrId_jumpRef() { FormStringControl control = dialog.formRunClient().controlCallingMethod(); Args args = New Args("AclDistrTable"); FormRun FR; ; args.lookupField(fieldNum(AclDistrTable, DistrId)); args.lookupValue(control.valueStr()); FR = new FormRun(args); control.jumpRef(); FR.init(); FR.run(); FR.wait(); } X++: public void dialogPostRun(dialogRunbase _dialog) { FormStringControl scDistrId; ; super(_dialog); _dialog.formRunClient().controlMethodOverload(true); _dialog.formRunClient().controlMethodOverloadObject(this); scDistrId = dialog.formRunClient().control(dialog.formRunClient().design().controlName("dfDistrId").id()); scDistrId.extendedDataType(extendedTypeNum( AclDistrId) ); scDistrId.autoDeclaration(true); } Что можно еще сделать, или есть обходной способ создать пункт в контекстном меню? |
|
08.05.2008, 16:38 | #2 |
Участник
|
откуда имя dfDistrId?
|
|
08.05.2008, 16:40 | #3 |
MCTS
|
задается в момент создания далога в методе Dialog:
X++: protected Object dialog() { ; dialog = Dialog::newFormnameRunbase('', this); dialog.caption(this.caption()); dialog = super(dialog); dialog.addGroup("@SYS32327"); dfDistrId = dialog.addFieldValue(typeId(AclDistrId), this.parmDistrId(), "@ACL3", '', 'dfDistrId'); return dialog; } |
|
08.05.2008, 16:48 | #4 |
Участник
|
это имя переменной в классе, а имя контрола будет типа fld_1
|
|
08.05.2008, 16:54 | #5 |
MCTS
|
точнее Fld1_1, но все равно это сути не меняет, пункт не появился
|
|
08.05.2008, 16:57 | #6 |
MCTS
|
то есть
X++: ... dfDistrId = dialog.addFieldValue(typeId(AclDistrId), this.parmDistrId(), "@ACL3"); info(dfDistrId.name()); ... Но в доработке Kashperuk класса dialogfield я могу его задать жестко. |
|
08.05.2008, 17:09 | #7 |
MCTS
|
при этом scDistrId.extendedDataType(extendedTypeNum( /*другой EDT*/) );
меняет выпадающий список связанной таблицы. То есть свойство extendedDataType для контрола устанавливается |
|
08.05.2008, 17:12 | #8 |
Участник
|
А в просто форме оно появляется (если контрол не привязанный к данным?)
|
|
08.05.2008, 17:17 | #9 |
MCTS
|
Цитата:
А в просто форме оно появляется (если контрол не привязанный к данным?)
|
|
08.05.2008, 17:22 | #10 |
MCTS
|
Попробовал в классе DialogField добавить метод по примеру mandatory:
X++: //DEV_DialogExtensions_IKash Mandatory property on DialogField IKASH --> void mandatory(boolean mandatory = buildControl.mandatory()) { // If properties exists then we are on server if (properties) { Dialog::setProp(properties, #PropertyMandatory, mandatory); } else this.fieldControl().mandatory(mandatory); } X++: void extendedDataType(ExtendedTypeId _edt) { FormStringControl fsc; // If properties exists then we are on server if (properties) { Dialog::setProp(properties, #PropertyExtendeddatatype, _edt); } else { fsc = this.fieldControl(); // проваливаемся при этом сюда fsc.extendedDataType(_edt); } } X++: protected Object dialog() { ; dialog = Dialog::newFormnameRunbase('', this); dialog.caption(this.caption()); dialog = super(dialog); dialog.addGroup("@SYS32327"); dfDistrId = dialog.addFieldValue(typeId(AclDistrId), this.parmDistrId(), "@ACL3", '', 'dfDistrId'); dfDistrId.extendedDataType( extendedTypeNum(AclDistrId) ); } Последний раз редактировалось Eldar9x; 08.05.2008 в 17:47. |
|
08.05.2008, 17:51 | #11 |
Участник
|
Здесь проблема не в EDT, а как раз в том, что должен быть перекрыть метод jumpRef, но форма, видимо, не смотрит на существующие методы класса, который управляет событиями этой формы
|
|
08.05.2008, 17:59 | #12 |
MCTS
|
То есть таким образом не получится. А возможно как-нибудь программно добавить в меню пункт? Может быть использовать showContextMenu(int _menuHandle), и с помощью menuHandle выкрутиться?
|
|
08.05.2008, 18:04 | #13 |
Участник
|
Угу. Точно.
Я здесь предлагал использовать эмуляцию с помощью метода context()
__________________
Axapta v.3.0 sp5 kr2 Последний раз редактировалось AndyD; 08.05.2008 в 18:08. Причина: Неправильная ссылка |
|
|
За это сообщение автора поблагодарили: IvanS (1), Eldar9x (1). |
12.05.2008, 13:24 | #14 |
MCTS
|
Да, спасибо, способ работает отлично. Правда, не совсем понял, зачем перекрывать контекст?
И с showContextMenu отлично все добавляется. Остались только два вопроса, как сделать стиль у меню стандартный и каким образом убрать стандартный пункты (Настройка, например)? |
|