|
28.09.2006, 17:55 | #1 |
Участник
|
Не устанавливается свойство extendedDataType
Всем привет.
Открываю форму, в зависимости от выбора пользователя создаю динамически элемент, пытаюсь установить свойство extendedDataType SE.extendedDataType(extendedTypeNum(ItemId)); Не срабатывает. Подскажите, как можно установить extendedDataType у динамически созданного элемента на форме. |
|
28.09.2006, 18:31 | #2 |
Участник
|
|
|
28.09.2006, 18:41 | #3 |
Участник
|
Слишком много элементов придется создать. На каждый расширенный тип по одному. И при появлении нового расширенного типа код переписывать. Хочется универсальности.
|
|
28.09.2006, 18:51 | #4 |
Участник
|
Задача стоит следующая:
Пользователь выделяет любое количество записей, вызывает форму где есть одно поле которое содержит список полей из источника данных. Выбирает любое поле, появляеться второе поле которое по типу соответствует выбранному, вводит значение и это значение копируется во все выбранные записи указанного поля. Имитация выделения нескольких ячеек в Excel и вставка из буфера в них определенного значения. Так как в Аксапте по ячейкам выделять нельзя был придуман такой выход, может кто-то что получше посоветует, рад любым предложениям. |
|
28.09.2006, 20:47 | #5 |
Участник
|
А почему вы считаете, что это свойство не установилось?
Что возвращает вызов SE.extendedDataType()? Лейбл у контрола правильный? Может у вас не показывается лукап-кнопка? Тогда просто вызовите для вашего контрола метод X++: SE.lookupButton(2);
__________________
Axapta v.3.0 sp5 kr2 |
|
28.09.2006, 21:11 | #6 |
Участник
|
Все прекрасно работает
Посмотрите, к примеру, метод формы \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 |
Участник
|
Спасибо с fsc.lookupButton(2) все получилось. А есть ли возможность из DictField узнать нужна кнопка lookup или нет, а то теперь это кнопка прорисовывается даже для Real и String в которых она не предусмотрена?
To Kashperuk: У нас Axapta 3.0 SP 2 там в clicked() код ограничен только созданием элемента, установки расширенного типа данных там нет, туда я смотрел, самое интересное, что за lookupButton я уже читал на форуме только вспомнил об этом когда мне ответили. |
|
29.09.2006, 11:02 | #8 |
Участник
|
Ну да, у меня тоже там нет этих двух строк - это я добавил для вас, для наглядности.
|
|
|
За это сообщение автора поблагодарили: MikeR (1). |
29.09.2006, 11:00 | #9 |
Участник
|
У DictField есть метод baseType(), который возвращает базовый тип, на котором основано это поле.
Вообще советую посметреть класс DialogField метод init() - этот класс используется при создании контролов в диалоговом окне - оттуда можно взять много чего
__________________
Axapta v.3.0 sp5 kr2 |
|
29.05.2007, 10:03 | #10 |
Участник
|
А где в стандартном диалоге вызывается lookupButton?
X++: Dialog d=new Dialog("1"); ; d.addField(typeID(EmpliD)); d.run(); \Classes\DialogField\init Но вызова не заметил. Как стандартный диалог строится? |
|
29.05.2007, 10:32 | #11 |
Участник
|
Думаю нигде в 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(); } А когда форма уже открыта, приходится вызывать вручную. То есть конкретно в твоем примере здесь Classes\DialogForm\doInit Последний раз редактировалось kashperuk; 29.05.2007 в 10:40. |
|
|
За это сообщение автора поблагодарили: belugin (3). |
29.05.2007, 11:10 | #12 |
Участник
|
Пытаюсь добавить дату
Пытаюсь добавить TransDate на ходу - поведение весьма странное...
X++: void clicked() { Object c; super(); c = grp.addControl(FormControlType::Date, 'my'+int2str(timeNow())); c.extendedDataType(extendedTypeNum(TransDate)); c.lookupButton(2); } |
|
29.05.2007, 11:27 | #13 |
Участник
|
Как вариант - добавь c.resetUserSetting();
__________________
Axapta v.3.0 sp5 kr2 |
|
29.05.2007, 11:29 | #14 |
Участник
|
Угу. Или c.enter();, к примеру
|
|
29.05.2007, 11:39 | #15 |
Участник
|
С c.enter() будет не очень кошерно - размер не пересчитается
__________________
Axapta v.3.0 sp5 kr2 |
|
29.05.2007, 12:21 | #16 |
Участник
|
Еще вопрос. Можно ли контролу объяснить, что надо переходить по JumpRef так же, как если бы поле с таким же ЕДТ было добавлено в таблицу?
|
|
|
Похожие темы | ||||
Тема | Ответов | |||
Про свойство Mandatory | 34 | |||
Свойство в дизайне | 4 | |||
Длина extendedDataType | 2 | |||
Не ставится свойство Table у Body | 2 | |||
Как бы присвоить свойтво поля ExtendedDataType в рун тайм ... а ? | 17 |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|