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