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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.09.2004, 10:24   #1  
LMA is offline
LMA
Участник
 
22 / 16 (1) ++
Регистрация: 16.09.2004
Адрес: Воронеж
Типы элементов управления на форме
Как в runtime узнать типы элементов управления на форме (FormControl), в том числе и динамически созданных?
Старый 16.09.2004, 10:43   #2  
Hezl is offline
Hezl
Участник
Аватар для Hezl
 
138 / 16 (1) ++
Регистрация: 21.04.2004
Адрес: Moscow, Russia
PHP код:
FormControl fc;
sysFormRun::controlType(classidget(fc)); 
Старый 16.09.2004, 10:50   #3  
demID is offline
demID
Участник
 
61 / 12 (1) ++
Регистрация: 16.08.2004
Адрес: Москва
В качестве примера привожу обработчик события clicked на кнопке в форме.
Данный пример перебирает все контролы в форме и ищет среди них контролы с определенными типами.

PHP код:

void clicked
()
{
    
FormControl c;
    
int         i;
    
FormRun     formRun;
    ;
    
super();
    
formRun element;
    for (
i=0i<formRun.design().controlCount(); i++)
    {
        
formRun.design().controlNum(i);
        switch(
classidget(c))
        {
            case 
classnum(FormGridControl):
                
info("Объект " c.name() + " имеет тип FormGridControl");
                break;
            case 
classnum(FormComboBoxControl):
                
info("Объект " c.name() + " имеет тип FormComboBoxControl");
                break;
            case 
classnum(FormButtonControl):
                
info("Объект " c.name() + " имеет тип FormButtonControl");
                break;
        }
    }

__________________
Когда гестапо перекрыло все выходы, Штирлиц вышел через вход!
Старый 16.09.2004, 11:24   #4  
LMA is offline
LMA
Участник
 
22 / 16 (1) ++
Регистрация: 16.09.2004
Адрес: Воронеж
Спасибо!
Старый 05.04.2007, 12:58   #5  
gefr is offline
gefr
Участник
Аватар для gefr
MCBMSS
 
147 / 17 (1) ++
Регистрация: 01.11.2004
Адрес: МО, Котельники
можно еще короче:
X++:
void clicked()
{
    FormControl c;
    int         i;
    FormRun     formRun;
    ;
    super();
    formRun = element;
    for (i=0; i<formRun.design().controlCount(); i++)
    {
        c = formRun.design().controlNum(i);
        info("Объект " + c.name() + " имеет тип Form" +
              sysformrun::controltypestr(classidget(c))+"Control");    
    }
}
Старый 05.04.2007, 14:09   #6  
valentino is offline
valentino
Участник
Аватар для valentino
 
33 / 11 (1) +
Регистрация: 14.02.2007
Мысль хорошая! но...

во первых, у меня срабатывает только при
for (i = 1; i <= formRun.design().controlCount();

во вторых, дополнительный вопрос: а как перебрать контролы, которые содержатся в дрогом котроле, например в Tab содержатся Fields. Делать как-то рекурсию?

Последний раз редактировалось valentino; 05.04.2007 в 14:12.
Старый 05.04.2007, 14:17   #7  
gefr is offline
gefr
Участник
Аватар для gefr
MCBMSS
 
147 / 17 (1) ++
Регистрация: 01.11.2004
Адрес: МО, Котельники
про 'i=' - извиняюсь, правил текст из форума, в реале не проверил
дык контролы сначала содержатся на форме, а потом в табе.
отсюда смена задачи - отобразить контролы в иерархической структуре, как в AOT....
задача вроде как решается посредством каких-нидь парентов (предварительная сборка в контайнере, выборочный перебор.......)
Старый 05.04.2007, 14:41   #8  
valentino is offline
valentino
Участник
Аватар для valentino
 
33 / 11 (1) +
Регистрация: 14.02.2007
можешь привести примерчик парент - чилд?
дело в том что если у меня на форме один Tab и один ButtonGroup, в табе есть 2 закладки, в первой закладке грид, на второй - 10 полей; а в ButtonGroup - 5 кнопок, то твой пример выдает только 2 результата: Tab и ButtonGroup, т.е. 2 парента. А хочу еще и все поля просмотреть которые находятся на 2й закладке таба, и все кнопки которые находятся в ButtonGroup.
Старый 05.04.2007, 14:47   #9  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Тип элемента еще можно определять как c.handle();
А про перебор узлов формы - посмотри класс TreeNodeTraverser
Старый 05.04.2007, 15:25   #10  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
А чего бы не посмотреть как \Forms\SysSetupForm строит дерево (это форма, которая вызывается при Правая кнопкаъ\Настройка)
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Динамическое создание DataSource на форме, и добавление элементов дизайна. epack DAX: Программирование 12 24.11.2010 15:31
Изменение цвета элементов управления Lucky13 DAX: Программирование 1 02.12.2005 10:40
BugFix: В форме складских журналов нельзя перемещаться с помощью клавиш курсора Maxim Gorbunov DAX: Программирование 5 21.01.2005 01:20
Элемент управления на форме Yegor DAX: Администрирование 2 09.11.2004 16:36
Различные типы связей (LinkType) для FormDataSource Maxim Gorbunov DAX: База знаний и проекты 1 16.05.2004 13:20

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

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

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