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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.08.2021, 07:22   #1  
Pandasama is offline
Pandasama
Участник
 
457 / 137 (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() меняет метку у поля на то, что мне нужно.

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

Ну, скажем, в персонализацию я, наверно, могу через параметры пользователя залезть, а как из неё получить конкретный контрол на форме как объект?
Старый 24.08.2021, 08:27   #2  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Ну, все правильно.
Есть formBuildDesign (вы его получаете через element. Form(). Design()) и formBuildControl c наследниками formBuildXXXcontrol
Все они относятся к дизайну, т. Е. К тому макету который запланирован, как будет выглядеть форма и создан на этапе разработки.
А в рантайме используется то что получилось. Смотрите классы без Build в имени.
Дизайн для рантайма можно получить как element. Design()
И обратите внимание на тип возвращаеиого значения.
За это сообщение автора поблагодарили: Pandasama (2).
Теги
ax2012, form, form control, form design, formbuildcontrol, formcontrol

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
ax2009, ax2012: как правильно отобразить фильтр на форме? mazzy DAX: Программирование 6 25.03.2019 19:09
AX2012 Отступы полей на форме ta_and DAX: Программирование 4 23.01.2017 18:32
Итератор с поддержкой методов обратного вызова для обработки контролов на форме gl00mie DAX: Программирование 18 06.08.2013 22:16
Сортировка на форме с учётом регистра mikki_messer DAX: Программирование 13 06.03.2013 16:34
Порядок отображения контролов на форме matew DAX: Программирование 1 26.10.2006 09:12

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

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

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