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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.02.2013, 07:50   #1  
Vasiliusis is offline
Vasiliusis
Участник
 
225 / 13 (1) ++
Регистрация: 30.01.2013
Создание формы в рантайме: прикрепить кнопку с МЕТОДОМ clicked
Добрый день, товарищи!

Ситуация такая: я создаю в коде в режиме выполнения форму, которую потом запускаю. В процессе создания я добавляю контрол, скажем кнопку, у которой необходимо перекрыть метод обработчик события clicked. Напомню, что форма создается ДИНАМИЧЕСКИ

Вопрос такой: как это сделать и возможно ли это в принципе?
Старый 07.02.2013, 08:03   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,433 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Для чего нужен FormControl.controlMethodOverloadObject...
За это сообщение автора поблагодарили: Vasiliusis (1).
Старый 07.02.2013, 08:42   #3  
Vasiliusis is offline
Vasiliusis
Участник
 
225 / 13 (1) ++
Регистрация: 30.01.2013
Товарищи, делюсь кодом:
(Предполагается, что есть class MethodsClass, где, согласно статье, есть метод void Button_clicked):

X++:
    MethodsClass methods = new MethodsClass();
    Form form1;
    FormRun frun;
    Args args;
    FormBuildDesign fbd;
    FormBuildControl fbc;
    FormBuildTabControl fbtc;
    FormBuildTabPageControl fbtpc;
    FormBuildGridControl fbgc;
    FormBuildDataSource fbds;
    FormBuildStringControl fbsc;
    FormBuildIntControl fbic;
    FormBuildButtonControl fbbc;
    FormBuildStringControl fbsc2;
    FormBuildStringControl fbsc3;

    ;


    //Создаем форму
    form1 = new Form();


    //Потренеруемся заодно сменять датасорс
    fbds = form1.addDataSource(tablestr(Worker));
    fbds.name(tablestr(TableA));
    fbds.table(tablenum(TableA));

    fbds.allowCreate(false);
    fbds.allowDelete(false);
    fbds.allowEdit(false);
    fbd = form1.addDesign("Design");
    fbtc = fbd.addControl(FormControlType::Tab, "Tab");
    fbtc.width(400);
    fbtpc = fbtc.addControl(FormControlType::TabPage, "TabPage");
    fbtpc.caption("Caption");

    fbgc = fbtpc.addControl(FormControlType::Grid, "Grid");
    fbgc.allowEdit(true);
    fbgc.width(350);
    fbic = fbgc.addDataField(fbds.id(), fieldnum(TableA, ID));
    fbic.label("Айди");
    fbic.width(50);
    fbsc = fbgc.addDataField(fbds.id(), fieldnum(TableA, A_TEXT));
    fbsc.label("Текст");
    fbsc.width(250);

    //Добавка кнопки
    fbbc = fbtpc.addControl(FormControlType::Button, "Button");
    fbbc.text("Текст кнопки");
    fbbc.bold(7);
    fbbc.colorScheme(2);
    fbbc.backStyle(2);
    fbbc.backgroundColor(0x0000ff00);
    fbbc.foregroundColor(0x00ff0000);


    //Добавка поля датасорса
    fbsc2 = fbtpc.addControl(FormControlType::String, "StringEdit");
    fbsc2.dataSource(fbds.id());
    fbsc2.dataField(fieldnum(TableA, A_TEXT));


    //Добавка текстового поля с перечислением
    fbsc3 = fbtpc.addControl(FormControlType::String, "StringEdit1");
    fbsc3.extendedDataType(extendedTypeNum(ETD_String));

    args = new Args();
    args.name("Рантайм-форма!");
    args.object(form1);

    frun = new FormRun(args);
    frun.init();
    frun.run();

    //Вот код прикрепления метода
    frun.controlMethodOverload(true);
    frun.controlMethodOverloadObject(methods);

    frun.wait();
S.Kuskov, Вам лайк!
Старый 07.02.2013, 08:49   #4  
DmitryK is offline
DmitryK
Участник
 
179 / 76 (3) ++++
Регистрация: 22.12.2011
Я думаю, что Вам поможет данный пример

C уважением, Дмитрий.
Вложения
Тип файла: xpo Class_OverrideControlsMethod.xpo (1.1 Кб, 326 просмотров)
Тип файла: xpo Job_RunTimeForm.xpo (2.5 Кб, 509 просмотров)
Старый 07.02.2013, 09:10   #5  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
В Ax2012 есть новый метод RegisterOverrideMethod, который может в каких-то случаях быть удобнее.
Теги
динамическая форма, динамичкский метод, кнопка, перекрытие методов, перекрыть

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Автоматическое создание формы... lev DAX: Программирование 37 29.05.2009 14:31
Создание Lookup формы Maxim Gorbunov DAX: База знаний и проекты 9 26.06.2007 16:44
Странное поведение формы Создание строк vc DAX: Функционал 10 22.03.2006 10:32
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38
Создание feature key на поле формы tov DAX: Администрирование 11 30.06.2003 15:49

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 10:04.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.