Показать сообщение отдельно
Старый 24.08.2021, 07:22   #1  
Pandasama is offline
Pandasama
Участник
 
464 / 140 (5) +++++
Регистрация: 11.08.2014
Адрес: Барнаул
Ax2012, итерация контролов на форме с учетом персонализации
Коллеги, вот такой вопрос.
Есть форма, хочу перебрать контролы и, скажем, поменять метку.
Перебор реализован, например таким рекурсивным методом, который первый раз вызывается без параметров в .init() формы перед super().
X++:
public void setControls(FormBuildControl _control = null)
{
    int                 ctrlCount;
    int                 ctrlIdx;
    FormBuildControl    fbc;

    if (_control)
    {
        ctrlCount = _control.controlCount();
        for (ctrlIdx = 1; ctrlIdx <= ctrlcount; ctrlidx++) 
        {
            fbc = _control.controlNum(ctrlIdx); 
            element.setlabel(fbc);
            if (fbc.iscontainer() && fbc.controlcount()) 
            {
                element.setcontrols(fbc); 
            }
        }
    } 
    else 
    {
        ctrlcount = element.form().design().controlCount(); 
        for (ctrlIdx = 1; ctrlIdx <= ctrlcount; ctrlidx++) 
        {
            fbc = element.form().design().controlNum(ctrlIdx); 
            element.setlabel(fbc);
            if (fbc.iscontainer() && fbc.controlcount()) 
            {
                element.setcontrols(fbc); 
            }
        }
    }
}
Метод .setLabel() меняет метку у поля на то, что мне нужно.

Для стандартных контролов все работает ОК. Но если я добавлю на форме поле через персонализацию - то для него не срабатывает.
Как можно в рантайме к этим полям обратиться?

Ну, скажем, в персонализацию я, наверно, могу через параметры пользователя залезть, а как из неё получить конкретный контрол на форме как объект?