alibek » 10.02.2005 (Чт) 10:51
Как и обещал, небольшие комментарии.
Классы Prn* однотипны и различаются только набором свойств. По сути, это просто контейнер для хранения специализированных пропертей и кода, как такового, не имеет.
Основной класс это PrintJob.
/* Отступление
Первоначально класс задумывался с наворотами (превью и т.п.). Но затем мне стало некогда им заниматься и все эти навороты я поотключал, чтобы не мешали. Поэтому в коде так много заглушек.
*/
Он содержит коллекцию переменных (значение которых подставляется в распечатываемый текст) и коллекцию объектов, которые будут выводится на печать. Коллекция переменных управляется методами и свойствами, начинающимися с Var.
Из графических объектов поддерживаются следующие типы:
- точка
- линия
- окружность
- прямоугольник
- картинка
- текстовый блок
- текст
Текстовый блок форматирует текст, вписывая его в заданный прямоугольник. Текст позиционируется от точки и в нем нет переноса слов. В
Каждый объект можно добавить, удалить и изменить. Кроме того, можно удалить или посчитать все объекты заданного типа. Каждый объект может иметь уникальный идентификатор, если идентификатор не задан, то объект можно найти по порядковому номеру (объекты нумеруются в порядке добавления). Печатаются объекты также в порядке добавления. Возможностей изменить ZOrder объекта пока нет, так же как и возможности изменить идентификатор.
Когда все требуемые объекты добавлены, вызывается метод PrintCurrentJob; при этом печатается только один лист. Если нужен многостраничный документ, то надо либо создавать несколько инстансов PrintJob, либо последовательно использовать один.
Метод PrintCurrentJob НЕ ВЫЗЫВАЕТ Printer.EndDoc, его необходимо вызывать самому.
Класс позволяет сохранять и загружать отчеты (список графических объектов) из файла, для этого есть методы Save и Load (на последнем загрушка, но можно вызывать метод LoadTextBuffer).
Lasciate ogni speranza, voi ch'entrate.