Главная » Объект Printer
Объект Printer автоматически создается, если в программе указана ссылка на модуль printers. Этот объект предоставляет программисту все необходимое для того, чтобы научить программу выводить данные на один из подключенных к ПК принтеров.
Вывод на принтер в windows ничем не отличается от вывода на экран: в распоряжение программиста предоставляется свойство сап-vas объекта printer, содержащее набор чертежных инструментов и методы, свойственные классу tcanvas. Размер листа бумаги в пикселях принтера определяют свойства height и width, а набор принтерных шрифтов - свойство fonts.

Свойства объекта printer:
property aborted: boolean; Содержит true, если выполнение предыдущего задания на печать было досрочно прекращено
property canvas: tcanvas; Канва принтера - основной инструмент создания изображения на листе бумаги
type tprintercapability = (pccopies, pcorientation, pccollation) ; tprintercapabilities = set of tprintercapability; property capabilities: tprinter capabilities; Содержит возможности текущей настройки драйвера принтера: pccopies - может печататься несколько копий документа; pcorien tation -драйвер поддерживает разную ориентацию листа бумаги; pccollation -документ печатается в подбор по экземплярам
property copies: integer; Указывает требуемое количество копий документа
property fonts: tstrings; Содержит список всех доступных принтеру шрифтов
tprinterorientation = (poportrait, polandscape) ; property orientation: tprinterorientation; Определяет ориентацию листа бумаги: poportrait вертикальная; polandscape - горизонтальная
property pageheight: integer; Содержит высоту листа бумаги в пикселях принтера
property pagenumber: integers; Содержит номер печатаемой страницы документа (начинается с 1)
property pagewidth: integer; Содержит ширину листа бумаги в пикселях принтера
property printerlndex: integer; Содержит индекс умалчиваемого принтера в списке printers
property printers: tstrings; Содержит список всех доступных принтеров
property printing: boolean; Содержит true, если принтер занят печатью документа
property title: string; Содержит имя задания на печать
Методы объекта printer:
procedure abort; Досрочно прекращает печать документа
procedure begindoc; Начинает печать документа
procedure enddoc; Завершает печать документа
procedure newpage; Начинает печать новой страницы документа
Вот как, например, можно напечатать текст, содержащийся в редакторе memo 1:
procedure tform1.button1click(sender: tobject);
var
y,dy,k: integer;
begin
if memol.lines.count=0 then exit;
screen.cursor := crhourglass;
with printer do
begin
begindoc;
with printer.canvas do
begin
font := memol.font;
dy := textheight('1'); // Определяем высоту строки
y := 2*dy; // Отступ от верхнего края листа
for k := 0 to memol.lines.count-1 do
begin
//Выводим очередную строку textout(О,y,memol.lines[k]);
//Смещаемся на следующую строку листа
inc(y,dy) ;
if pageheight-y<2*dy then
// Нижний край листа?
begin //Да
newpage; //Переход на новый лист
// Выводим номер страницы
textout(0,0,'с.'+inttostr(pagenumber)) ;
y := 2*dy
end;
end;
end;
enddoc;
end;
screen.cursor := crdefault;
end;
Замечу, что до обращения к begindoc программа не имеет никаких сведений о принтере, и поэтому широко распространенной ошибкой будет объединение такого рода:
with printer, printer.canvas do
begin
begindoc;
font.size := 12;
end;
В этом фрагменте шрифт принтера вряд ли окажется нужного размера, т. к. относится к умалчиваемой канве некоторого абстрактного принтера. Лишь после обращения к begindoc канва получит истинные представления о возможностях принтера и сможет правильно управлять его свойствами. Нужно так:
printer.begindoc; //Обращаемся к драйверу принтера
//и настраиваем нужным образом канву
with printer.canvas do
begin
font.size := 12;
end;
Во многих случаях для печати документа гораздо проще использовать специальные компоненты, расположенные на странице qre-port галереи компонентов delphi. Эти компоненты разработаны для создания отчетов по материалам, хранящимся в базах данных, но могут с успехом использоваться и для печати обычных документов. Центральный компонент quickrep имеет метод preview, с помощью которого можно просмотреть образ печатного документа и при желании напечатать документ.
Методику использования компонентов qreport поясню на следующем примере. Пусть на форме form1 имеется текстовый редактор memol, просмотр содержимого которого в виде образа печатного документа открывает нажатие кнопки button1. Создайте в проекте новую пустую форму form2 и положите на нее компонент quickrepl.
На этот компонент положите qrband1, а на него - qrmemo1. Напишите такой обработчик нажатия кнопки button1:
procedure tformi.buttonlclick(sender: tobject);
begin
with form2 do
begin
//Копируем содержимое memol в qrmemo1:
qrmemoi.lines.assign(memol.lines);
//Используем установленный в memol шрифт:
qrmemoi.font := memol.font;
//Вызываем окно просмотра и печати документа:
quickrepl.preview
end;
end;
Окно просмотра образа печатного документа, появляющееся после щелчка по кнопке buttoni, показано на рис. 20.1. Инструментальная кнопка В позволяет напечатать документ, а кнопка В - выбрать нужный принтер и настроить его параметры. При печати будут автоматически формироваться страницы документа, при необходимости они могут снабжаться заголовками, нумероваться и т. д. Категория: Языки программирования | Просмотров: 207 Операционные Системы и СУБД