AXForum  
Go Back   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search

 
 
Thread Tools Search this Thread Display Modes
Old 28.08.2018, 12:34   #1  
demianimp is offline
demianimp
Участник
 
202 / 104 (4) +++++
Join Date: 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
Old 28.08.2018, 15:06   #2  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,996 / 3293 (117) ++++++++++
Join Date: 12.10.2004
Location: Москва
Blog Entries: 2
Заведите десяток invisible контролов. Когда надо можно сделать visible, поменять прочие свойства. Порядок следования тоже можно менять вызовом move()

Изврат, но чего не сделаешь.
Old 28.08.2018, 20:38   #3  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,720 / 1207 (44) ++++++++
Join Date: 13.01.2004
Blog Entries: 3
Не проверял. Предположение. Разные команды обновления не пробовали? Ну, на вскидку

ctrlImage.visible(true);

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

element.redraw();

Возможно, поможет еще сделать саму форму невидимой, добавить объект, затем отобразить форму
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Old 29.08.2018, 08:44   #4  
Player1 is offline
Player1
Участник
Самостоятельные клиенты AX
 
306 / 137 (5) +++++
Join Date: 21.04.2008
Я бы сначала попробовал заполучить картинку в объект image = new Image(), а потом передать его контролу: ctrlImage.image(image).
Ну и поигрался с методами colorScheme и backgroundColor.
Еще смущают методы widthMode и heightMode, попробуйте выставить изначально конкретные размеры widthValue(32), heightValue(32).
Old 29.08.2018, 09:54   #5  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,996 / 3293 (117) ++++++++++
Join Date: 12.10.2004
Location: Москва
Blog Entries: 2
Если я правильно понял автора - там проблема воспроизводится именно в связке с датасорсом.
This post has been rated by: demianimp (3).
Old 29.08.2018, 10:15   #6  
raz is offline
raz
NavAx
raz's Avatar
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,499 / 1097 (39) ++++++++
Join Date: 22.07.2003
Location: МО
Ткну пальцем в небо: когда програмно добавлено, то размер контрола 0 на 0.
Old 29.08.2018, 10:42   #7  
demianimp is offline
demianimp
Участник
 
202 / 104 (4) +++++
Join Date: 10.10.2013
Прикладываю картинку, чтобы было понятно что происходит.
Верхняя часть добавляется программно, нижнею часть добавил через AOT.
Attached Thumbnails
Click image for larger version

Name:	ax_image_form.JPG
Views:	624
Size:	62.1 KB
ID:	12023  
Old 29.08.2018, 10:47   #8  
Ivanhoe is offline
Ivanhoe
Участник
Ivanhoe's Avatar
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2161 (81) +++++++++
Join Date: 29.09.2005
Location: Санкт-Петербург
Можете проект выложить?
__________________
Ivanhoe as is..
Old 29.08.2018, 11:41   #9  
demianimp is offline
demianimp
Участник
 
202 / 104 (4) +++++
Join Date: 10.10.2013
Quote:
Originally Posted by Ivanhoe View Post
Можете проект выложить?
Выкладываю форму.

\Forms\FormItemImageTest\Data Sources\ItemImage - нужно указать таблицу, где есть картинка;
\Forms\FormItemImageTest\Designs\Design\Window:AotImage - указать поле с картинкой;
\Forms\FormItemImageTest\Methods\init - указать таблицу и поле, где находится картинка.
Attached Files
File Type: xpo FormItemImageTest.xpo (1.9 KB, 474 views)
Old 29.08.2018, 11:42   #10  
demianimp is offline
demianimp
Участник
 
202 / 104 (4) +++++
Join Date: 10.10.2013
Quote:
Originally Posted by Владимир Максимов View Post
Не проверял. Предположение. Разные команды обновления не пробовали? Ну, на вскидку

ctrlImage.visible(true);

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

element.redraw();

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

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

X++:
ctrlImage.image().resize(32,32, InterpolationMode::InterpolationModeBicubic);
Attached Thumbnails
Click image for larger version

Name:	Image.png
Views:	411
Size:	84.3 KB
ID:	12025  
__________________
Sergey Nefedov
Old 29.08.2018, 14:25   #12  
demianimp is offline
demianimp
Участник
 
202 / 104 (4) +++++
Join Date: 10.10.2013
Quote:
Originally Posted by SRF View Post
Проверил вашу форму в ax2012 r3, у меня работает ваш код(и для типа поля контейнер и для типа поле числовой), т.е. картинка отображается, а у вас точно не отображается? Просто судя по скрину размер контрола, который видно в гриде существенно меньше самого рисунка, не может быть так что там есть отображение но только левый крайний угол картинки, при запуске формы вот так у меня(см. скриншот).

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

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

Нужно было делать через
X++:
 groupImageList.addDataField(ItemImage_ds.id(), fieldNum(ItemImage, Image));
Всем спасибо за участие.
This post has been rated by: Logger (3), Raven Melancholic (5).
Tags
adddatafield, ax2009, formwindowcontrol, image

 

Similar Threads
Thread Thread Starter Forum Replies Last Post
Как добавить картинку в грид 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

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 23:56.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.