При формировании пользовательского интерфейса прикладной задачи иногда требуется отображать в диалоговых формах и печатных документах графические файлы. Для этого в системе «1С:Предприятие» версии 7.7 используется специальный агрегатный тип данных "
Картинка"
и одноимённый элемент формы диалога и таблицы.
Если в форму диалога или в таблицу при помощи визуальных средств Конфигуратора вставлены элементы формы типа «Картинка», система автоматически создаёт объекты этого типа, причем идентификаторы этих элементов доступны в контексте программного модуля этой формы как уже существующие объекты типа "
Картинка"
.
Процедура ВводНового() // предопределенная процедура // При открытии формы для ввода нового сотрудника // загружаем рисунок с надписью "Фото отсутствует" ФотоСотрудника.Загрузить(КаталогИБ() + "pictures\no_foto.bmp"); . . . КонецПроцедуры
В результате работы вышеприведённого кода в форме будет отображена картинка с надписью «Фото отсутствует».
В программных модулях допускается также создавать произвольное число объектов типа "
Картинка"
при помощи системной функции СоздатьОбъект()
. В качестве названия агрегатного типа данных обязательно должно выступать ключевое слово «Картинка» (англоязычный синоним — «Picture»):
Логотип = СоздатьОбъект("Картинка");
В англоязычном варианте:
Logo = CreateObject("Picture");
Методы объекта типа «Картинка»
Загрузить картинку из файла или из библиотеки картинок конфигурации в элементы формы типа «Картинка» позволяет метод Загрузить()
. В качестве единственного параметра методу передаётся строковое выражение, содержащее имя графического файла (с указанием пути к нему) или идентификатор картинки из библиотеки картинок конфигурации. Англоязычный синоним имени метода — Load()
.
Пример использования метода:
Процедура ЗагрузитьФотоСотрудника() ИмяФайла = ""; ИмяКаталога = "C:"; Если ФС.ВыбратьФайлКартинки(0, ИмяФайла, ИмяКаталога, "Выберите файл", "bmp", ) = 1 Тогда ФотоСотрудника.Загрузить(ИмяКаталога + "\" + ИмяФайла); . . . КонецЕсли; КонецПроцедуры
Примечание: Загружаемый методом графический файл может иметь формат WMF, EMF, ICO, BMP, DIB или RLE.
Выгрузить картинку из элемента формы типа «Картинка» в файл позволяет метод Сохранить()
. В качестве единственного параметра методу передаётся строковое выражение, содержащее имя создаваемого графического файла с указанием пути к нему. Картинка будет выгружена в файл в том же формате, в котором ранее была загружена. Англоязычный синоним имени метода — Save()
.
Пример использования метода:
ФотоСотрудника.Сохранить("A:\foto.bmp");
Установить режим отображения картинки в элементе формы типа «Картинка» позволяет метод РежимРисования()
. В качестве единственного параметра методу передаётся числовое выражение, определяющее режим отображения картинки (возможные значения: 1 — растягивать; 2 — отображать по центру с оригинальным размером; 3 — отображать с сохранением пропорций). Англоязычный синоним имени метода — SetDrawMode()
.
Пример использования метода:
Процедура ВводНового() // предопределенная процедура // При открытии формы для ввода нового сотрудника // загружаем рисунок с надписью "Фото отсутствует" ФотоСотрудника.РежимРисования(2); ФотоСотрудника.Загрузить(КаталогИБ() + "pictures\no_foto.bmp"); . . . КонецПроцедуры
Переустановить объект типа "
Картинка"
позволяет метод УстановитьКартинку()
. В качестве единственного параметра методу передаётся выражение, имеющее значение типа "
Картинка"
, или OLE-объект типа IPicture. Англоязычный синоним имени метода — SetPicture()
.
Данный метод копирует все содержимое одного объекта в другой, в отличие от оператора присваивания «=», который передаёт значение ссылки на уже существующий объект:
А = СоздатьОбъект("Картинка"); В = А; // Переменные А и В ссылаются на один и тот же объект
А = СоздатьОбъект("Картинка"); B = СоздатьОбъект("Картинка"); А.Загрузить("с:\foto\logo.bmp"); В.УстановитьКартинку(А); // Переменные А и В ссылаются на два разных объекта, // хотя содержат одно и то же
Метод УстановитьКартинку()
может быть полезен при создании различных анимационных эффектов в формах.
Пример создания анимации:
// Допустим в Форме диалога у нас есть элемент // типа "Картинка" с идентификатором "Кино". // Сделаем анимацию изображения в этой форме Перем Фото[0]; // Создадим объекты и загрузим в них картинки Для H = 1 По 5 Цикл Фото[H] = СоздатьОбъект("Картинка"); Фото[H].Загрузить("с:\BMP\Foto" + Строка(H) + ".bmp"); КонецЦикла; // Теперь запустим анимацию Для Раз = 1 По 100 Цикл Для H = 1 По 5 Цикл Кино.УстановитьКартинку(Фото[H]); КонецЦикла; КонецЦикла;
Другие статьи по схожей тематике