Печать с помощью объекта Printer

В Delphi имеется класс печатающих объектов TPrinter, который обеспечивает печать текстов, изображений и других объектов, расположенных на его канве — Canvas (см. разделы 3.2 и 4.2). На канве объекта типа TPrinter могут размещаться и тексты, и изображения.

Модуль Delphi, именуемый Printers, содержит переменную Printer, являющуюся объектом типа TPrinter. Эта переменная эквивалентна невизуальному компоненту, только отсутствующему в палитре библиотеки. Чтобы использовать Printer, надо добавить модуль Printers в оператор uses вашей программы. Автоматически он не добавляется.

Рассмотрим некоторые свойства и методы объекта типа TPrinter.

Свойство, метод Описание
Canvas Канва Canvas — место в памяти, в котором формируется страница или документ перед печатью. Canvas обладает рядом свойств, включая Pen (перо) и Brush (кисть), которые позволяют вам делать рисунки и помещать на них текст. Подробное описание канвы и методов работы с ней вы найдете в разделе 4.2.
TextOut Метод канвы, который позволяет посылать в нее текст (см. раздел 3.2).
BeginDoc Используется для начала задания печати.
EndDoc Используется для окончания задания печати. Фактическая печать происходит только при вызове EndDoc.
PageHeight Возвращает высоту страницы в пикселях.
NewPage Принудительно начинает новую страницу на принтере.
PageNumber Возвращает текущий номер печатаемой страницы.
 

Предположим, вы хотите напечатать текст, используя печатающий объект. Вы можете написать код вида:

Printer.BeginDoc;
Printer.Canvas.ТехtOut(10, 10,
    'Я печатаю через объект Printer');
Printer.EndDoc;

Этот код вызывает печать на канве принтера текста «Я печaтаю через объект Printer», начиная с десятого пикселя слева и десятого сверху. BeginDoc запускает задание на печать. Текст посылается на канву с помощью метода TextOut объекта Canvas. Метод EndDoc вызывает печать текста и останавливает задание на печать.

Если вы хотите напечатать изображение, хранящееся в компоненте Image1 (см. раздел 4.3), это можно сделать операторами:

Printer.BeginDoc;
with Image1.Picture.BitMap do
  Printer.Canvas.CopyRect(Rect(0, 0, Height, Width),
    Canvas, Rect(0, 0, Height, Width));
Printer.EndDoc;

При печати текста объект Printer не производит автоматического переноса строк и разбиения текста на страницы. Поэтому печать длинных текстов с помощью объекта Printer требует достаточно сложного программирования. Проще это делать, например, загрузкой текста в компонент RichEdit (см. раздел 3.3.4) и выполнением его метода Print (см. раздел 4.7.1). Другой возможный вариант — использование описанной в следующем разделе системы QuickReport.

Hosted by uCoz



Проект Delphi Space © Выпуск 2009- 2010