24.11.2016, 11:52 | #1 |
Участник
|
Поиск контрола в dialog
Добрый день коллеги. Такой вопрос У меня есть родительский класс в котором в методе dialog строиться динамическая форма От этого родительского класса я создал дочерний перекрыл метод dialog и хочу переименовать один из созданных контролов который был определен в родительском методе. Подскажите как к нему добраться. Ниже описан dialog родительского класса мне нужно переименовать в своем классе контрол с именем myControl
public Object dialog() { ; dialog = super(); dialog.windowType(FormWindowType::Workspace); dialog.addGroup('@SYS54716'); dialogToDate = dialog.addFieldValue(typeid(dateOnHand), toDate); fieldDimCenter = dialog.addFieldValue(typeid(DimCenterId), DimCenterId); dialog.addGroup('@SYS13865'); dialogByGroup = dialog.addFieldValue(Typeid(NoYes), ByGroup, "@SYS12006"); dialogByAccounts = dialog.addFieldValue(Typeid(NoYes), ByAccounts, "Счет"); dialogByCenter = dialog.addFieldValue(Typeid(NoYes), ByCenter, "@SYS13911"); dialogByLocation = dialog.addFieldValue(Typeid(NoYes), ByLocation, "@SYS6437"); dialogByOverallsCategoryId = dialog.addFieldValue(Typeid(NoYes), byOverallsCategoryId, "Категория СО"); dialog.addGroup('@CSS334'); dialogShowReceiptDate = dialog.addFieldValue(Typeid(NoYes), showReceiptDate, 'Дата послед. прихода на склад',"@NDU553","myControl"); dialogShowExpenceDate = dialog.addFieldValue(Typeid(NoYes), showExpenceDate, "@NDU554"); dialogShowOverallsCategoryId = dialog.addFieldValue(Typeid(NoYes), showOverallsCategoryId, "Категория СО"); dialogDimGroup = inventDimParm.addFieldsToDialog(dialog,"@SYS53654",false,false,'',null,param); return dialog; } |
|
24.11.2016, 11:56 | #2 |
Участник
|
я бы в родительском классе сделал метод myControlName, возвращал бы стандартное имя
а в новом классе просто переопределил бы этот метод |
|
24.11.2016, 12:48 | #3 |
Участник
|
Ваш совет наверно был бы рациональней , но проблему решили с помощью кода представленного ниже в дочернем классе
public Object dialog() { Object ret; DialogRunbase dialogloc; formCheckBoxControl dl; FormControl recurseGet(Object _parent, name _ctrlname, int _depth = 1) { int i; str name; str caption; str dashes; FormControl result; FormControl bcontrol; ; if (SysTest::hasMethod(_parent, identifierStr(name))) { if (_ctrlname == _parent.name()) { bcontrol=_parent; return bcontrol; } } // Escape condition! if (_parent.controlCount() == 0) return null; // Recursive statement for (i=1; i<=_parent.controlCount(); i++) { result = recurseGet(_parent.controlNum(i),_ctrlname, _depth+1); if (result!=null) return result; } return null; } ; ret = super(); dialogloc = ret; dl = recurseGet( dialogloc.dialogForm().form().design(),"myControl"); dl.label('Дата послед. прихода на табельный номер'); return ret; } |
|
24.11.2016, 13:12 | #4 |
Участник
|
X++: public Object dialog() { Object ret; ret = super(); dialogShowReceiptDate .label('Дата послед. прихода на табельный номер'); return ret; } |
|
24.11.2016, 13:47 | #5 |
Участник
|
Выражаю всем огромную благодарность за помощь
|
|