Доклад: Различные способы печати из приложений

В этой статье я постараюсь рассказать Вам о самых удобных и распространенных способах печати текстов и изображений из Ваших приложений. Печать используется в приложениях не так часто, вот и возникают различные вопросы по этому поводу. Иногда бывает необходимо "вывести на принтер" график получившейся функции или отчет о деятельности фирмы и т.д. Прочитав эту статью Вы освоите все самое необходимое для печати данных из Ваших приложений.

Итак, начнем рассмотрение этих способов.

Печать с помощью функций файлового ввода/вывода

Здесь мы будем использовать простейшие функции ввода/вывода в файл, только свяжем выходной поток не с файлом, а с принтером. Рассмотрим пример печати текста, содержащегося в компоненте TEdit:

var P:TextFile;

begin

AssignPrn(P);

Rewrite(P);

Writeln(P, Edit1.text);

CloseFile(P);

End;

Здесь мы объявляем переменную P типа TextFile. Процедура AssignPrn является разновидностью процедуры Assign. Она настраивает переменную P на порт принтера и позволяет работать с ним как с файлом. Rewrite открывает порт для работы, а WriteLn - выводит информацию на печать. Важно закрыть порт принтера командой CloseFile!!!

Этот способ можно использовать для распечатки строк списка или каких-нибудь других данных, по мере их поступления в программу.

Печать текстов в обогащенном формате методом Print

Если Вы пытались попробовать распечатать тексты из Вашего приложения, то , наверно, Вам известно, что компонент TRichEdit имеет метод Print, позволяющий печатать текст, хранящийся в этом компоненте. Этот метод имеет только один параметр - строку, которая при просмотре в Windows очереди печатаемых заданий является именем задания. Приведу пример использования (хотя он очевиден :)

RichEdit1.Print('Print of our RichEdit1');

Следует заметить, что печать воспроизводит все особенности форматирования текста, так же происходит автоматический перенос строк и разбиение текста на страницы. При этом длина строк ни как не связана с размерами компонента RichEdit.

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

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

Модуль Дельфи Printers, содержит переменную Printer, которая является объектов типа TPrinter. Поэтому для использования этой переменной в Ваших программах, надо подключить модуль Printers в оператор Uses (к сожалению автоматически этого не делается)

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

Свойство, метод Описание
Canvas Канва - место в памяти, в котором формируется страница или документ перед печатью.
TextOut Метод канвы, позволяющий посылать в нее текст
BeginDoc Используется для начала задания печати
EndDoc Используется для завершения задания печати. При этом печать начинается только после вызова этого метода!
PageHeight Возвращает высоту страницы в пикселах
NewPage Принудительно начинает новую страницу
PageNumber Возвращает номер печатаемой страницы

Приведу два примера печати с помощью объекта TPrinter текста и изображения.

Печать текста можно осуществить так:

Printer.BeginDoc;

Printer.Canvas.TextOut(10,10,'Печатаем с помощью объекта Printer');

Printer.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 есть существенный недостаток: он не производит автоматическое разбиение на строки и страницы, поэтому печатать длинные тексты предпочтительнее с помощью компонента RichEdit или Memo.

Печать форм

У форм в Delphi есть метод Print, который печатает всю клиентскую область формы. При этом полоса заголовка и полоса главного меню формы не печатаются.

Свойство PrintScale определяет опции масштабирования изображения формы при печати:

poNone Масштабирование не используется. Размер изображения может изменяться в зависимости от используемого принтера
poPrintToFit Делается попытка напечатать изображение формы того же размера, который виден на экране
poProportional Увеличивает или уменьшает размер изображения, подгоняя его под размер страницы.

--> ЧИТАТЬ ПОЛНОСТЬЮ <--

К-во Просмотров: 210
Бесплатно скачать Доклад: Различные способы печати из приложений