Показать сообщение отдельно
Старый 19.08.2021, 14:27   #6  
danov.86 is offline
danov.86
Участник
 
25 / 13 (1) ++
Регистрация: 16.08.2012
Вот мой пример перебора контролов формы может кому ни будь будет полезно
FormControl getToDateControl(str _controlName) // поиск контрола на форме по имени
{
int i,y,fCnt;
FormControl control, groupCtrl ;
FormBuildControl controlBuild,buildCtrl;
Object groupBuildObject,groupCtrlObject;
FormControl ctrl;
FormControl getcontrol;
str name;


FormControl getGroupControl(FormBuildControl _buildControl)
{
FormBuildControl controlBuildloc, buildCtrlloc;
FormControl controlloc, groupCtrlloc ;
Object groupBuildObjectloc,groupCtrlObjectloc;


groupCtrlloc = element.design().control(_buildControl.id());
groupBuildObjectloc = _buildControl;
controlBuildloc = this.form().design().control(groupCtrlloc.id());
fCnt = groupBuildObjectloc.controlCount(); // проверяем сколько вложенностей в полученном контроле
for(y=1; fCnt>=y;y++) // перебервем все вложенности контрола
{
buildCtrlloc = controlBuildloc.controlNum(y);
if (buildCtrlloc)
ctrl = element.design().control(buildCtrlloc.id()); // получаем вложенный контрол
controlBuildloc = this.form().design().control(ctrl.id());
if(controlBuildloc && controlBuildloc.isContainer()) // смотрим есть ли во вложенном контроле вложенности
{
ctrl = getGroupControl(controlBuildloc); // отправляем на рекурсию
if(ctrl != null)
return ctrl;
}
else
{
if(ctrl.name() == _controlName ) // если вложенностей нет проверяем имя контрола с искомым контролом
return ctrl;
else
return null;
}
}

}
;
for(i=1; element.design().controlCount()>=i;i++) //перебераем верхний уровень контролов
{
control = element.design().controlNum(i);
controlBuild = this.form().design().control(control.id());

if(controlBuild && controlBuild.isContainer()) // проверяем есть ли в контроле вложенности
{
control = getGroupControl(controlBuild); // отправляем полученный верхний контрол в метод обработки
if(control != null )
return control;
}
else
{
if(control.name() == _controlName ) // если вложенностей нет проверяем имя контрола с искомым контролом
return control;
}
}
return control;
}

Последний раз редактировалось danov.86; 19.08.2021 в 14:38.