Воюю с УФ. Пытаюсь сделать функционал для автоматических рихтофки фоток в формат 3*4.
Есть упр. форма, на ней элемент Декорация-Картинка. В него надо передавать картинку из MSScriptControl.ScriptControl
вот как пытаюсь:
//**********************************************************************
Функция ЗагрузитьФото(ФайлИзображения)
//Возвращает объект картинки из файлов наиболее популярных графических форматов
//bmp, jpg, tif, gif, png
Скрипт = "
|Function LoadImage(SourseFile,ResultFile)
|On Error Resume Next
|Dim Img 'As ImageFile
|Dim IP 'As ImageProcess
|Dim objFSO
|
|Set Img = CreateObject(""WIA.ImageFile"")
|Set IP = CreateObject(""WIA.ImageProcess"")
|Set objFSO = CreateObject(""Scripting.FileSystemObject"")
|
|Img.LoadFile SourseFile
|
|IP.Filters.Add IP.FilterInfos(""Convert"").FilterID
|IP.Filters(1).Properties(""FormatID"").Value = ""{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}""
|
|Set Img = IP.Apply(Img)
|
|If objFSO.FileExists(ResultFile) Then
| objFSO.DeleteFile ResultFile
|End If
|If Err.Number = 0 Then
| Img.SaveFile ResultFile
| LoadImage = 1
|Else
| LoadImage = 0
|End if
|End Function
|";
ИспСкрипт = Новый ComОбъект("MSScriptControl.ScriptControl");
ИспСкрипт.Language="vbscript";
ИспСкрипт.AddCode(Скрипт);
ВремФайл = КаталогВременныхФайлов() + "TempWIA1Cimagefile.bmp";
Рез = ИспСкрипт.Run("LoadImage",ФайлИзображения,ВремФайл);
Если Рез Тогда
К = Новый Картинка(ВремФайл);
Иначе
К = Новый Картинка();
КонецЕсли;
Возврат К;
КонецФункции
&НаКлиенте
Процедура Загрузить(Команда)
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Диалог.Заголовок = "Выберите фото 3*4";
Диалог.ПолноеИмяФайла = "";
Диалог.ПредварительныйПросмотр = Истина;
Диалог.Фильтр =
"Все картинки (*.bmp;*.dib;*.rle;*.jpg;*.jpeg;*.tif;*.gif;*.png;*.ico;*.wmf;*.emf)|*.bmp;*.dib;*.rle;*.jpg;*.jpeg;*.tif;*.gif;*.png;*.ico;*.wmf;*.emf|"
+ "Формат bmp (*.bmp;*.dib;*.rle)|*.bmp;*.dib;*.rle|"
+ "Формат JPEG (*.jpg;*.jpeg)|*.jpg;*.jpeg|"
+ "Формат TIFF (*.tif)|*.tif|"
+ "Формат GIF (*.gif)|*.gif|"
+ "Формат PNG (*.png)|*.png|"
+ "Формат icon (*.ico)|*.ico|"
+ "Формат метафайл (*.wmf;*.emf)|*.wmf;*.emf|"; // картинки
Если Диалог.Выбрать() Тогда
фото3х4=ЗагрузитьФото(Диалог.ПолноеИмяФайла); //получает картинку, все ОК
Элементы.Декорация1.Картинка = фото3х4; //тут спотыкается
Иначе
Отказ = Истина;
Возврат;
КонецЕсли;
Ширина = СвойствоИзображения(Объект.ВремФайл,1);
Высота = СвойствоИзображения(Объект.ВремФайл,2);
КонецПроцедуры
{Форма.УФ.Форма(388)}: Ошибка при установке значения атрибута контекста (Картинка)
Элементы.Декорация1.Картинка = фото3х4;
по причине:
Недопустимое значение
Причем, из библиотеки вставляет нормально:
Элементы.Декорация1.Картинка = БиблиотекаКартинок.Фото; - ОК
Туплю - как установить картинку ИЗ ВНЕШНЕГО ФАЙЛА?
возможно что дело в Элементы.Декорация1.Картинка.Вид = ВидКартинки.Пустая;
а должен быть Элементы.Декорация1.Картинка.Вид = ВидКартинки.Абсолютная;
ЗЫ. Пример от УТ11 смотрел. НавигационнаяСсылкаКартинки - не подходит
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший