Р’ этой статье СЏ постараюсь рассказать Вам Рѕ самых удобных Рё распространенных способах печати текстов Рё изображений РёР· Ваших приложений. Печать используется РІ приложениях РЅРµ так часто, РІРѕС‚ Рё возникают различные РІРѕРїСЂРѕСЃС‹ РїРѕ этому РїРѕРІРѕРґСѓ. РРЅРѕРіРґР° бывает необходимо "вывести РЅР° принтер" график получившейся функции или отчет Рѕ деятельности фирмы Рё С‚.Рґ. Прочитав эту статью Р’С‹ освоите РІСЃРµ самое необходимое для печати данных РёР· Ваших приложений.
Ртак, начнем рассмотрение этих СЃРїРѕСЃРѕР±РѕРІ.
Печать с помощью функций файлового ввода/вывода
Здесь мы будем использовать простейшие функции ввода/вывода в файл, только свяжем выходной поток не с файлом, а с принтером. Рассмотрим пример печати текста, содержащегося в компоненте 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.