Класс 1С++ для программного добавления изображений/текста/ШК в таблицу
Буквально на днях встала задача программного размещения картинок в уже сформированной таблице, при этом картинки должны были быть с прозрачным фоном. Как результат изысканий появился данный класс - возможно кому-нибуть пригодится.
Что может:Размещать в произвольном месте в таблице картинки с прозрачным фоном, с возможностью произвольного смещения картинки по оси X/Y, c возможностью поворота картинки на произвольный градус. С версии 1.3 - поддержка вывода 81 типа штрих-кодов, в том числе двухмерные QR Code, Data Matrix и т.д. (корректно кодирует кириллицу).
Где использовать:
- при вставке подписей и печатей
- при вставке фирменных логотипов
- для реализации корпоративного оформления документов
- при вставке текста
- при вставке штрих-кодов (список доступных типов ШК см. ниже)
- и т.д.
Что используется:1. ВК TableDoc.dll - автор Трапезников Дмитрий (trad) (обязательно )2. ActiveX элемент управления bmp_1c.ocx (ActiveBMP) - автор Морев Андрей (Z1) (обязательно )3. ActiveX GFLAx (http://www.xnview.com/en/download_gfl.html) - для возможности произвольного поворота вставляемого изображения и конвертации входящего изображения в BMP ( опционально )4. ActiveX элемент управления text_1c.ocx (ActiveText) - автор Морев Андрей (Z1) (опционально )
5. Шрифт EanG000.ttf - для вывода штрих-кодов EAN-13.
Методы: Процедура ПодключитьТаблицу ( Таб ) - подключение таблицы к классу
- Таб - объект типа "Таблица"
Функция ДобавитьИзображение ( Лево , Верх , Право , Низ , Путь , Тип ) - добавление изображения в таблицу, возвращает ссылку на добавленный объект ActiveBMP
- Лево , Право , Верх , Низ - координаты добавиления изображения в таблицу (см. "тип")
- Путь - путь к файлу изображения
- Тип - тип системы координат: 0 - пиксельная; 1 - табличная; 2 - левый верхний угол задается в табличной системе, в "право,низ" - задается смещение относительно левого верхнего угла
Функция ДобавитьТекст_Актив ( Лево , Верх , Право , Низ , Текст , Тип ) - добавление текста (с помощью ActiveText) в таблицу, возвращает ссылку на добавленный объект ActiveText
- Лево , Право , Верх , Низ - координаты добавиления изображения в таблицу (см. "тип")
- Текст - текст для добавления в таблицу
- Тип - тип системы координат: 0 - пиксельная; 1 - табличная; 2 - левый верхний угол задается в табличной системе, в "право,низ" - задается смещение относительно левого верхнего угла
Функция ДобавитьШК_Актив ( Лево , Верх , Право , Низ , ШК , Тип ) - добавление штрих-кода (с помощью ActiveText) в таблицу, возвращает ссылку на добавленный объект ActiveText
- Лево , Право , Верх , Низ - координаты добавиления изображения в таблицу (см. "тип")
- ШК - штрих-код для добавления в таблицу
- Тип - тип системы координат: 0 - пиксельная; 1 - табличная; 2 - левый верхний угол задается в табличной системе, в "право,низ" - задается смещение относительно левого верхнего угла
Функция ДобавитьТекст ( Лево , Верх , Право , Низ , Текст , Тип ) - добавление текста (стандартный объект Текст) в таблицу, возвращает ссылку область таблицы добавленного объекта
- Лево , Право , Верх , Низ - координаты добавиления изображения в таблицу (см. "тип")
- Текст - текст для добавления в таблицу
- Тип - тип системы координат: 0 - пиксельная; 1 - табличная; 2 - левый верхний угол задается в табличной системе, в "право,низ" - задается смещение относительно левого верхнего угла
Функция Добавить ШК ( Лево , Верх , Право , Низ , ШК , Тип ) - добавление штрих-кода (стандартный объект Текст) в таблицу, возвращает ссылку область таблицы добавленного объекта
- Лево , Право , Верх , Низ - координаты добавиления изображения в таблицу (см. "тип")
- ШК - штрих-код для добавления в таблицу
- Тип - тип системы координат: 0 - пиксельная; 1 - табличная; 2 - левый верхний угол задается в табличной системе, в "право,низ" - задается смещение относительно левого верхнего угла
Функция Добавить ШК_Оквита ( Лево , Верх , Право , Низ , ШК , ТипШК , Тип ) - добавление штрих-кода (с помощью OcvitaBarcode) в таблицу, возвращает ссылку на добавленный объект OcvitaBarcode
- Лево , Право , Верх , Низ - координаты добавиления изображения в таблицу (см. "тип")
- ШК - штрих-код для добавления в таблицу
- ТипШК - тип штрих-код для добавления в таблицу, можно передавать цифровой код или строковое название (доступные типы ШК см. ниже)
- Тип - тип системы координат: 0 - пиксельная; 1 - табличная; 2 - левый верхний угол задается в табличной системе, в "право,низ" - задается смещение относительно левого верхнего угла
Пример добавления в таблицу подписи с печатью
. Таблица = СоздатьОбъект("Таблица"); //заполнение таблицы . Таблица.Показать();
Печ = СоздатьОбъект("ИзображенияДляТаблицы"); Печ.ПодключитьТаблицу(Таблица); Печ.ЕстьПроизвольноеСмещение = 1;
Печ.ЕстьПроизвольныйПоворот = 0; Печ.ДобавитьИзображение(2,5,70,50,"C:\Подпись.gif",2);
Печ.ЕстьПроизвольныйПоворот = 1; Печ.ПроизвольныйПоворотНач = -15; Печ.ПроизвольныйПоворотКон = 15;
Обновление от 09.06.2012 версия 1.1
1. При повороте картинки - размер картинки увеличивается пропорционально углу поворота - раньше это увеличение картинки компенсировалось увеличением
втавляемого ОЛЕ-объекта, теперь новое изображение после поворота обрезается до первоначальных размеров - имхо - так более правильно.
2. Особенностью ActiveBMP является то, что изображение из файла подгружается в ОЛЕ-объект в момент визуального просмотра таблицы/отправки на печать. Поэтому при массовой вставке объектов с произвольным поворотом в таблицу получалось что при просмотре всей таблицы в ОЛЕ-объекты подгружалось последнее "повернутое" изображение (корректировка картинки работала через один файл во временном каталоге). Сейчас для каждого такого изображения создается свой уникальный файл во временном каталоге. Данные файлы удаляются при следующем создании объекта " ИзображенияДляТаблицы " - это накладывает некоторое ограничение - если сформировать таблицу несколько раз подряд (без печати и визуального просмотра всех страниц), то изображения на невидимых страницах всех таблиц, кроме последней, будут отсутствовать.
Обновление от 18.06.2012 версия 1.2
1. Добавлена возможность размещения в таблице текста и штрих-кода двумя способами: с помощью ActiveX элемент управления bmp_1c.ocx (ActiveBMP) и с помощью стандартного объекта "Текст" (базовый функционал одинаков, но у ActiveX возможностей все таки больше - возможно кому то это будет критично). При этом работает возможность произвольного смещения и поворота добавляемого объекта.
2. Процедуры добавления объекта переделаны в функции, с возвратом ссылки на добавляемый объект, чтобы после добавления можно было "поиграть" со свойствами этих объектов.