|  28.08.2018, 12:34 | #1 | 
| Участник |  Программно добавить картинку 
			
			Добрый день. Пытаюсь программно добавить контрол на форму, вызываю следующий код после 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 | 
| Участник | 
			
			Заведите десяток invisible контролов. Когда надо можно сделать visible, поменять прочие свойства. Порядок следования тоже можно менять вызовом move() Изврат, но чего не сделаешь. | 
|  | 
|  28.08.2018, 20:38 | #3 | 
| Участник | 
			
			Не проверял. Предположение. Разные команды обновления не пробовали? Ну, на вскидку ctrlImage.visible(true); ItemImage_ds.reread(); ItemImage_ds.refresh(); element.redraw(); Возможно, поможет еще сделать саму форму невидимой, добавить объект, затем отобразить форму 
				__________________ - Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... | 
|  | 
|  29.08.2018, 08:44 | #4 | 
| Участник | 
			
			Я бы сначала попробовал заполучить картинку в объект image = new Image(), а потом передать его контролу: ctrlImage.image(image). Ну и поигрался с методами colorScheme и backgroundColor. Еще смущают методы widthMode и heightMode, попробуйте выставить изначально конкретные размеры widthValue(32), heightValue(32). | 
|  | 
|  29.08.2018, 09:54 | #5 | 
| Участник | 
			
			Если я правильно понял автора - там проблема воспроизводится именно в связке с датасорсом.
		 | 
|  | |
| За это сообщение автора поблагодарили: demianimp (3). | |
|  29.08.2018, 10:15 | #6 | 
| NavAx | 
			
			Ткну пальцем в небо: когда програмно добавлено, то размер контрола 0 на 0.
		 | 
|  | 
|  29.08.2018, 10:42 | #7 | 
| Участник | 
			
			Прикладываю картинку, чтобы было понятно что происходит. Верхняя часть добавляется программно, нижнею часть добавил через AOT. | 
|  | 
|  29.08.2018, 10:47 | #8 | 
| Участник | 
			
			Можете проект выложить?
		 
				__________________ Ivanhoe as is.. | 
|  | 
|  29.08.2018, 11:41 | #9 | 
| Участник | 
			
			Выкладываю форму. \Forms\FormItemImageTest\Data Sources\ItemImage - нужно указать таблицу, где есть картинка; \Forms\FormItemImageTest\Designs\Design\Window:AotImage - указать поле с картинкой; \Forms\FormItemImageTest\Methods\init - указать таблицу и поле, где находится картинка. | 
|  | 
|  29.08.2018, 11:42 | #10 | 
| Участник | Цитата: | 
|  | 
|  29.08.2018, 13:28 | #11 | 
| Участник | 
			
			Проверил вашу форму в ax2012 r3, у меня работает ваш код(и для типа поля контейнер и для типа поле числовой), т.е. картинка отображается, а у вас точно не отображается? Просто судя по скрину размер контрола, который видно в гриде существенно меньше самого рисунка, не может быть так что там есть отображение но только левый крайний угол картинки, при запуске формы вот так у меня(см. скриншот). Но если например сделать вот так X++:     ctrlImage.width(200);
    ctrlImage.height(200);X++: ctrlImage.image().resize(32,32, InterpolationMode::InterpolationModeBicubic); 
				__________________ Sergey Nefedov | 
|  | 
|  29.08.2018, 14:25 | #12 | 
| Участник | Цитата: 
		
			Сообщение от SRF
			   Проверил вашу форму в ax2012 r3, у меня работает ваш код(и для типа поля контейнер и для типа поле числовой), т.е. картинка отображается, а у вас точно не отображается? Просто судя по скрину размер контрола, который видно в гриде существенно меньше самого рисунка, не может быть так что там есть отображение но только левый крайний угол картинки, при запуске формы вот так у меня(см. скриншот). Но если например сделать вот так X++:     ctrlImage.width(200);
    ctrlImage.height(200);X++: ctrlImage.image().resize(32,32, InterpolationMode::InterpolationModeBicubic); | 
|  | 
|  29.08.2018, 16:38 | #13 | 
| Участник | 
			
			Если вместо X++:     ctrlImage.dataSource(ItemImage_ds.id());
    ctrlImage.dataField(fieldNum(ItemImage, Image));X++: ctrlImage.imageResource(412); | 
|  | 
|  29.08.2018, 17:26 | #14 | 
| Участник | 
			
			нашли решение Нужно было делать через X++:  groupImageList.addDataField(ItemImage_ds.id(), fieldNum(ItemImage, Image)); | 
|  | |
| За это сообщение автора поблагодарили: Logger (3), Raven Melancholic (5). | |