Переключение режимов вывода информации
Ниже показано, как использовать свойство Orientation для переключения режимов вывода информации на устройство печати.
procedure TForm1.PortraitClick(Sender: TObject);
begin
Printer.Orientation := poPortrait;
(Вывод вертикально}
end;
procedure TForm1.LandscapeClick(Sender: TObject);
begin
Printer.Orientation := poLandscape;
{Вывод горизонтально}
end;
Базовые операции с принтером
Ниже показан набор базовых операций, необходимых для вывода информации на устройство печати. Сначала вызывается метод BeginDoc. Затем с помощью метода TextOut принтерного контекста (Canvas) выводится информация, а ее непосредственная распечатка начинается после вызова метода EndDoc:
Begin
Printer.BeginDoc;
{/////////////////
{
Здесь происходит вывод информации на принтер, например, с помощью вызова Printer.Canvas.TextOut(X, Y, ' ');
}
/////////////////}
{Сообщить пользователю}
Label1.Caption := 'Printing page ' + IntToStr(Printer.PageNumber);
Printer.NewPage; {Новая страница}
Printer.EndDoc; {Начать печать}
End;
Ниже показано, как вывести на принтер графическое изображение:
Begin
Printer.BeginDoc; {Начнем вывод информации }
Printer.Canvas.Rectangle(10, 10, 200, 200);{Нарисуем прямоугольник }
Printer.EndDoc; {Начнем печать }
End;
Вывод текстовой информации
В приведенном ниже примере показано, как вывести на устройство печати содержимое редактора (класс типа ТМето). Для этого мы воспользуемся рядом процедур, определенных в модуле Printers. Сначала ассоциируем значение текстовой переменной с принтером. Для этого используется процедура AssignPrn. Например:
Var
TextToPrint : System.Text; {}
..............
AssignPrn(TextToPrint); {Ассоциировать с принтером)
Rewrite(TextToPrint);{Открыть файл}
Отметим, что с принтером может быть ассоциирована только одна текстовая переменная. Попытка ассоциации второй текстовой переменной приведет к возникновению ошибки.
После этого вызов стандартных процедур Write и Writeln приведет к выводу текста на устройство печати (точнее, в принтерный контекст, определенный свойством Canvas). Вывод содержимого редактора осуществляется с помощью стандартной процедуры Writeln:
For Line := 0 to Memo1.Lines.Count-1 do
Writeln(TextToPrint, Memo.Lines[Line])
После того как вывод информации завершен, необходимовызвать стандартную процедуру Close:
System.Close(TextToPrint)
Этот вызов эквивалентен вызову Printer.EndDoc.
Для того чтобы текст на устройстве печати печатался тем же шрифтом, что используется для его отображения в редакторе, перед выводом информации на принтер необходимо выполнить следующее присваивание:
Printer. Canvas. Font : = Memo1.Font;
Примечание.Для вывода текстовой информации можно также воспользоваться методом TextOut принтерного контекста (Canvas), который является «оболочкой» стандартной функции Windows API TextOut за тем исключением, что вам не требуется указывать в качестве первого параметра контекст — им служит компонент Canvas, и указывать число символов в строке:
procedure Canvas.TextOut(X, Y: Integer; const Text: string);
function GDI.TextOut(DC: HDC; X, Y: Integer; Str: PChar; Count: Integer):
Bool;
Использование стандартных диалоговых панелей
Delphi содержит компоненты, реализующие две стандартные для Windows 3.1 диалоговые панели, связанные с выводом информации на устройство печати. Это — компоненты для управления страницами PrintDialog и для настройки параметров принтера PrinterSetupDialog, расположенные в панели компонентов на странице Dialogs (рис. 74).
Рис. 74. Диалоговая панель PrintDialog
Компонент PrintDialog
Этот компонент используется для задания ряда характеристик при выводе информации на устройство печати — диапазон выводимых страниц, начальную и конечную страницу, качество печати (число точек на дюйм), возможность печати в файл и число копий. Ниже рассматривается ряд свойств этого компонента.
Рис. 75. Диалоговая панель PrinterSetupDialog
Свойства FromPage и ToPage
Позволяют задать номер начальной и конечной страницы для вывода на устройство печати.
Свойства MinPage и МахРаде
Используются для задания минимального и максимального значений для диапазона выбираемых страниц. Отметим, что с изменением значений этих свойств значения соответствующих полей в диалоговой панели не изменяются.