Доклад: Различные способы печати из приложений
Различные
способы печати из приложений
В этой статье я
постараюсь рассказать Вам о самых удобных и распространенных способах печати
текстов и изображений из Ваших приложений. Печать используется в приложениях не
так часто, вот и возникают различные вопросы по этому поводу. Иногда бывает
необходимо "вывести на принтер" график получившейся функции или отчет
о деятельности фирмы и т.д. Прочитав эту статью Вы освоите все самое необходимое
для печати данных из Ваших приложений.
Итак, начнем
рассмотрение этих способов.
Печать с
помощью функций файлового ввода/вывода
Здесь мы будем
использовать простейшие функции ввода/вывода в файл, только свяжем выходной
поток не с файлом, а с принтером. Рассмотрим пример печати текста,
содержащегося в компоненте 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
|
Увеличивает
или уменьшает размер изображения, подгоняя его под размер страницы.
|
На этом мы
заканчиваем обзор способов печати данных из Ваших приложений. Надеюсь, что еще
одним вопросом у Вас стало меньше :))
Список
литературы
Михаил
Христосенко. Различные способы печати из приложений
Для подготовки
данной работы были использованы материалы с сайта http://delphid.dax.ru
.
|