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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.09.2006, 17:55   #1  
Yegor is offline
Yegor
Участник
 
40 / 37 (2) +++
Регистрация: 12.09.2003
Не устанавливается свойство extendedDataType
Всем привет.
Открываю форму, в зависимости от выбора пользователя создаю динамически элемент, пытаюсь установить свойство extendedDataType
SE.extendedDataType(extendedTypeNum(ItemId));
Не срабатывает. Подскажите, как можно установить extendedDataType у динамически созданного элемента на форме.
Старый 28.09.2006, 18:31   #2  
Lemming is offline
Lemming
Участник
Аватар для Lemming
 
1,144 / 343 (14) ++++++
Регистрация: 20.04.2004
Адрес: Москва, Чайнатаун в Люблино
Записей в блоге: 10
!
Цитата:
Сообщение от Yegor Посмотреть сообщение
Всем привет.
Подскажите, как можно установить extendedDataType у динамически созданного элемента на форме.
ИМХО лучше заранее создать все контролы на форме и управлять их видимостью
Старый 28.09.2006, 18:41   #3  
Yegor is offline
Yegor
Участник
 
40 / 37 (2) +++
Регистрация: 12.09.2003
Слишком много элементов придется создать. На каждый расширенный тип по одному. И при появлении нового расширенного типа код переписывать. Хочется универсальности.
Старый 28.09.2006, 18:51   #4  
Yegor is offline
Yegor
Участник
 
40 / 37 (2) +++
Регистрация: 12.09.2003
Задача стоит следующая:
Пользователь выделяет любое количество записей, вызывает форму где есть одно поле которое содержит список полей из источника данных. Выбирает любое поле, появляеться второе поле которое по типу соответствует выбранному, вводит значение и это значение копируется во все выбранные записи указанного поля.
Имитация выделения нескольких ячеек в Excel и вставка из буфера в них определенного значения. Так как в Аксапте по ячейкам выделять нельзя был придуман такой выход, может кто-то что получше посоветует, рад любым предложениям.
Старый 28.09.2006, 20:47   #5  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2476 (88) +++++++++
Регистрация: 20.08.2005
А почему вы считаете, что это свойство не установилось?

Что возвращает вызов SE.extendedDataType()?
Лейбл у контрола правильный? Может у вас не показывается лукап-кнопка? Тогда просто вызовите для вашего контрола метод
X++:
SE.lookupButton(2);
__________________
Axapta v.3.0 sp5 kr2
Старый 28.09.2006, 21:11   #6  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Все прекрасно работает
Посмотрите, к примеру, метод формы
\Forms\tutorial_Form_AddControl\Designs\Design\[ButtonGroup:ButtonGroup]\Button:Button\Methods\clicked

Если там написать такой код, то все отрабатывает:

X++:
void clicked()
{
    FormBuildDesign             formBuilddesign = form.design();
    FormBuildGroupControl       formBuildGroupControl;
    formStringControl c;
    ;
    c = addGroup.addControl(FormControlType::STRING,'RunTimeControl');
    c.label("New control");
    c.extendedDataType(typeId2ExtendedTypeId(typeId(PurchId)));
    c.lookupButton(2);
    formBuildGroupControl = formBuildDesign.control( addGroup.id() );
}
Старый 29.09.2006, 10:11   #7  
Yegor is offline
Yegor
Участник
 
40 / 37 (2) +++
Регистрация: 12.09.2003
Спасибо с fsc.lookupButton(2) все получилось. А есть ли возможность из DictField узнать нужна кнопка lookup или нет, а то теперь это кнопка прорисовывается даже для Real и String в которых она не предусмотрена?
To Kashperuk: У нас Axapta 3.0 SP 2 там в clicked() код ограничен только созданием элемента, установки расширенного типа данных там нет, туда я смотрел, самое интересное, что за lookupButton я уже читал на форуме только вспомнил об этом когда мне ответили.
Старый 29.09.2006, 11:00   #8  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2476 (88) +++++++++
Регистрация: 20.08.2005
У DictField есть метод baseType(), который возвращает базовый тип, на котором основано это поле.

Вообще советую посметреть класс DialogField метод init() - этот класс используется при создании контролов в диалоговом окне - оттуда можно взять много чего
__________________
Axapta v.3.0 sp5 kr2
Старый 29.09.2006, 11:02   #9  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от Yegor Посмотреть сообщение
To Kashperuk: У нас Axapta 3.0 SP 2 там в clicked() код ограничен только созданием элемента, установки расширенного типа данных там нет, туда я смотрел, самое интересное, что за lookupButton я уже читал на форуме только вспомнил об этом когда мне ответили.
Ну да, у меня тоже там нет этих двух строк - это я добавил для вас, для наглядности.
За это сообщение автора поблагодарили: MikeR (1).
Старый 29.05.2007, 10:03   #10  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
А где в стандартном диалоге вызывается lookupButton?

X++:
Dialog d=new  Dialog("1");
;
d.addField(typeID(EmpliD));
d.run();
Сама кнопка есть, потрассировал
\Classes\DialogField\init

Но вызова не заметил. Как стандартный диалог строится?
Старый 29.05.2007, 10:32   #11  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Думаю нигде в DialogField он не вызывается. А вызывается потом в init() формы в super().

Проверил, перекрыл метод init() на вышеуказанной форме
X++:
public void init()
{
    FormBuildDesign             formBuilddesign = form.design();
    formStringControl c;
    ;
    c = formBuilddesign.addControl(FormControlType::STRING,'RunTimeControl');
    c.label("New control");
    c.extendedDataType(typeId2ExtendedTypeId(typeId(SalesId)));

    super();
}
Lookup button уже есть при открытии.
А когда форма уже открыта, приходится вызывать вручную.

То есть конкретно в твоем примере здесь
Classes\DialogForm\doInit

Последний раз редактировалось kashperuk; 29.05.2007 в 10:40.
За это сообщение автора поблагодарили: belugin (3).
Старый 29.05.2007, 11:10   #12  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Пытаюсь добавить дату
Пытаюсь добавить TransDate на ходу - поведение весьма странное...
X++:
void clicked()
{
    Object c;
    super();
    c = grp.addControl(FormControlType::Date, 'my'+int2str(timeNow()));
    c.extendedDataType(extendedTypeNum(TransDate));
    c.lookupButton(2);
}
Вложения
Тип файла: zip Test_AddControl.zip (1.6 Кб, 77 просмотров)
Старый 29.05.2007, 11:27   #13  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2476 (88) +++++++++
Регистрация: 20.08.2005
Как вариант - добавь c.resetUserSetting();
__________________
Axapta v.3.0 sp5 kr2
Старый 29.05.2007, 11:29   #14  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Угу. Или c.enter();, к примеру
Старый 29.05.2007, 11:39   #15  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2476 (88) +++++++++
Регистрация: 20.08.2005
С c.enter() будет не очень кошерно - размер не пересчитается
__________________
Axapta v.3.0 sp5 kr2
Старый 29.05.2007, 12:21   #16  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Еще вопрос. Можно ли контролу объяснить, что надо переходить по JumpRef так же, как если бы поле с таким же ЕДТ было добавлено в таблицу?
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Про свойство Mandatory simply2double DAX: Программирование 34 31.01.2007 16:38
Свойство в дизайне laxer DAX: Программирование 4 15.12.2006 14:44
Длина extendedDataType miklenew DAX: Программирование 2 14.11.2006 13:06
Не ставится свойство Table у Body AxDude DAX: Программирование 2 22.11.2005 00:10
Как бы присвоить свойтво поля ExtendedDataType в рун тайм ... а ? lp DAX: Программирование 17 15.07.2004 12:04

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

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

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