100 компонентов общего назначения библиотеки Delphi5

       

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


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

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

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

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

Предположим, вы хотите напечатать текст, используя печатающий объект. Вы можете написать код вида: Printer.BeginDoc; Printer.Canvas.ТехtOut(10, 10, 'Я печатаю через объект Printer'); Printer.EndDoc;

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

Если вы хотите напечатать изображение, хранящееся в компоненте Image1 (см. ), это можно сделать операторами: 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 (см. ) и выполнением его метода Print (см. ). Другой возможный вариант — использование описанной в следующем разделе системы QuickReport.



Содержание раздела