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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.08.2018, 12:34   #1  
demianimp is offline
demianimp
Участник
 
202 / 104 (4) +++++
Регистрация: 10.10.2013
? Программно добавить картинку
Добрый день.

Пытаюсь программно добавить контрол на форму, вызываю следующий код после super в init на форме:
X++:
    FormWindowControl   ctrlImage;
    ;
    ctrlImage = groupImageList.addControl(FormControlType::Image, 'Image');
    ctrlImage.dataSource(ItemImage_ds.id());
    ctrlImage.dataField(fieldNum(ItemImage, Image));
    ctrlImage.widthMode(FormWidth::ColumnWidth);
    ctrlImage.heightMode(FormHeight::ColumnHeight);
Контрол на форму добавляется, но не отображает картинку.
Если контрол добавить через AOT и выставить dataSource и dataField, то картинка отрисовывается корректно.

Если программно создать форму с этим контролом, то картинка отображается.

Вопрос: Что нужно еще сделать, чтобы на форме начала отображаться картинка? если мы контрол добавляем программно.

AXAPTA 2009
Старый 28.08.2018, 15:06   #2  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Заведите десяток invisible контролов. Когда надо можно сделать visible, поменять прочие свойства. Порядок следования тоже можно менять вызовом move()

Изврат, но чего не сделаешь.
Старый 28.08.2018, 20:38   #3  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,691 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Не проверял. Предположение. Разные команды обновления не пробовали? Ну, на вскидку

ctrlImage.visible(true);

ItemImage_ds.reread();
ItemImage_ds.refresh();

element.redraw();

Возможно, поможет еще сделать саму форму невидимой, добавить объект, затем отобразить форму
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 29.08.2018, 08:44   #4  
Player1 is offline
Player1
Участник
Самостоятельные клиенты AX
 
306 / 137 (5) +++++
Регистрация: 21.04.2008
Я бы сначала попробовал заполучить картинку в объект image = new Image(), а потом передать его контролу: ctrlImage.image(image).
Ну и поигрался с методами colorScheme и backgroundColor.
Еще смущают методы widthMode и heightMode, попробуйте выставить изначально конкретные размеры widthValue(32), heightValue(32).
Старый 29.08.2018, 09:54   #5  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Если я правильно понял автора - там проблема воспроизводится именно в связке с датасорсом.
За это сообщение автора поблагодарили: demianimp (3).
Старый 29.08.2018, 10:15   #6  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
Ткну пальцем в небо: когда програмно добавлено, то размер контрола 0 на 0.
Старый 29.08.2018, 10:42   #7  
demianimp is offline
demianimp
Участник
 
202 / 104 (4) +++++
Регистрация: 10.10.2013
Прикладываю картинку, чтобы было понятно что происходит.
Верхняя часть добавляется программно, нижнею часть добавил через AOT.
Миниатюры
Нажмите на изображение для увеличения
Название: ax_image_form.JPG
Просмотров: 562
Размер:	62.1 Кб
ID:	12023  
Старый 29.08.2018, 10:47   #8  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Можете проект выложить?
__________________
Ivanhoe as is..
Старый 29.08.2018, 11:41   #9  
demianimp is offline
demianimp
Участник
 
202 / 104 (4) +++++
Регистрация: 10.10.2013
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
Можете проект выложить?
Выкладываю форму.

\Forms\FormItemImageTest\Data Sources\ItemImage - нужно указать таблицу, где есть картинка;
\Forms\FormItemImageTest\Designs\Design\Window:AotImage - указать поле с картинкой;
\Forms\FormItemImageTest\Methods\init - указать таблицу и поле, где находится картинка.
Вложения
Тип файла: xpo FormItemImageTest.xpo (1.9 Кб, 428 просмотров)
Старый 29.08.2018, 11:42   #10  
demianimp is offline
demianimp
Участник
 
202 / 104 (4) +++++
Регистрация: 10.10.2013
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Не проверял. Предположение. Разные команды обновления не пробовали? Ну, на вскидку

ctrlImage.visible(true);

ItemImage_ds.reread();
ItemImage_ds.refresh();

element.redraw();

Возможно, поможет еще сделать саму форму невидимой, добавить объект, затем отобразить форму
Попробовал, результата остался прежним.
Старый 29.08.2018, 13:28   #11  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
375 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Проверил вашу форму в ax2012 r3, у меня работает ваш код(и для типа поля контейнер и для типа поле числовой), т.е. картинка отображается, а у вас точно не отображается? Просто судя по скрину размер контрола, который видно в гриде существенно меньше самого рисунка, не может быть так что там есть отображение но только левый крайний угол картинки, при запуске формы вот так у меня(см. скриншот).

Но если например сделать вот так
X++:
    ctrlImage.width(200);
    ctrlImage.height(200);
то первая картинка становится существенно больше, если же нужно просто сжать изображение, то это можно сделать в run после super()

X++:
ctrlImage.image().resize(32,32, InterpolationMode::InterpolationModeBicubic);
Миниатюры
Нажмите на изображение для увеличения
Название: Image.png
Просмотров: 356
Размер:	84.3 Кб
ID:	12025  
__________________
Sergey Nefedov
Старый 29.08.2018, 14:25   #12  
demianimp is offline
demianimp
Участник
 
202 / 104 (4) +++++
Регистрация: 10.10.2013
Цитата:
Сообщение от SRF Посмотреть сообщение
Проверил вашу форму в ax2012 r3, у меня работает ваш код(и для типа поля контейнер и для типа поле числовой), т.е. картинка отображается, а у вас точно не отображается? Просто судя по скрину размер контрола, который видно в гриде существенно меньше самого рисунка, не может быть так что там есть отображение но только левый крайний угол картинки, при запуске формы вот так у меня(см. скриншот).

Но если например сделать вот так
X++:
    ctrlImage.width(200);
    ctrlImage.height(200);
то первая картинка становится существенно больше, если же нужно просто сжать изображение, то это можно сделать в run после super()

X++:
ctrlImage.image().resize(32,32, InterpolationMode::InterpolationModeBicubic);
Попробовал, проблема осталась. Такое ощущение, что проблема в ядре.
Старый 29.08.2018, 16:38   #13  
demianimp is offline
demianimp
Участник
 
202 / 104 (4) +++++
Регистрация: 10.10.2013
Если вместо
X++:
    ctrlImage.dataSource(ItemImage_ds.id());
    ctrlImage.dataField(fieldNum(ItemImage, Image));
сделать
X++:
    ctrlImage.imageResource(412);
то картинка отобразится
Старый 29.08.2018, 17:26   #14  
demianimp is offline
demianimp
Участник
 
202 / 104 (4) +++++
Регистрация: 10.10.2013
нашли решение

Нужно было делать через
X++:
 groupImageList.addDataField(ItemImage_ds.id(), fieldNum(ItemImage, Image));
Всем спасибо за участие.
За это сообщение автора поблагодарили: Logger (3), Raven Melancholic (5).
Теги
adddatafield, ax2009, formwindowcontrol, image

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как добавить картинку в грид MikeR DAX: Программирование 0 26.12.2011 09:57
Программно добавить поле в таблицу. HorrR DAX: Программирование 3 06.08.2009 18:13
Программно добавить поле Salha DAX: Программирование 4 22.03.2007 11:12
Как программно добавить DataSource в процессе работы формы Владимир Максимов DAX: Программирование 1 29.11.2006 18:28
Программно добавить пункт меню Wamr DAX: Программирование 20 24.10.2006 09:14

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

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

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