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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.11.2016, 11:52   #1  
danov.86 is offline
danov.86
Участник
 
25 / 13 (1) ++
Регистрация: 16.08.2012
Поиск контрола в 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  
Omeo is offline
Omeo
Участник
 
129 / 50 (2) ++++
Регистрация: 18.03.2004
Адрес: Moscow
я бы в родительском классе сделал метод myControlName, возвращал бы стандартное имя
а в новом классе просто переопределил бы этот метод
Старый 24.11.2016, 12:48   #3  
danov.86 is offline
danov.86
Участник
 
25 / 13 (1) ++
Регистрация: 16.08.2012
Ваш совет наверно был бы рациональней , но проблему решили с помощью кода представленного ниже в дочернем классе

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  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,740 / 404 (17) +++++++
Регистрация: 23.03.2006
X++:
public Object dialog()
{
Object ret;

ret = super();

dialogShowReceiptDate .label('Дата послед. прихода на табельный номер');
return ret;
}
Старый 24.11.2016, 13:47   #5  
danov.86 is offline
danov.86
Участник
 
25 / 13 (1) ++
Регистрация: 16.08.2012
Выражаю всем огромную благодарность за помощь
 


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

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

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