Printer.
осушитель воздуха ballu
Объект 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
begin
if Memol.Lines.Count=0 then Exit;
Screen.Cursor := crHourGlass;
with Printer do
begin
with Printer.Canvas do
begin
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
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. Инструментальная кнопка В позволяет напечатать документ, а кнопка В - выбрать нужный принтер и настроить его параметры. При печати будут автоматически формироваться страницы документа, при необходимости они могут снабжаться заголовками, нумероваться и т. д.
![](/foto/2_delphi/2.265/20.1.gif)
Рис. 20.1 . Окно просмотра печатного документа
назад - Вперёд
|