Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции 2 семестр.doc
Скачиваний:
42
Добавлен:
27.05.2015
Размер:
777.73 Кб
Скачать

8.2. Печать текста

Существует два способа печати текста из приложений Delphi.

Самый простой с использованием процедур Pascal Write и Writeln для вывода в файл типа Text. В процедурах Write и Writeln текст печатается с применением графических шрифтов.

Пример использования модуля Printers и его объекта Printer:

……………..

uses ………, Printers;

……………..

procedure TForm1.Button1Click(Sender: TObject);

Var fPrn: Text; // объявлена переменная типа Text.

begin

AssignPrn(FPrn); // Инициализация текстового файла

Rewrite(FPrn);

try

Writeln(FPrn, 'Hello printer!'); // Использование текстового файла

finally

CloseFile(FPrn); // Закрытие текстового файла

end;

end;

Попытка использовать созданный с помощью процедуры AssignPrn файл вывода с процедурами Read или Readln приведет к генерации сообщения об ошибке времени выполнения программы. Нельзя считывать данные с принтера, так как он является устройством вывода.

В процедуры Write и Writeln можно включать управляющие коды, используемые для посылки команд принтеру. Эти текстовые значения вставляются в печатаемые строки или используются в операторах Write: Write(FPrn, #9); // Табуляция

Write(FPrn,#13); // Очистка содержимого выходного буфера

Write(FPrn, #10); // Очистка и начало новой строки

Write(FPrn, ^L); // Очистка и начало новой страницы

Процедуры Write и Writeln заменяют символы табуляции промежутками, превышающими в восемь раз ширину среднего символа используемого шрифта. Это значит, что при печати пропорциональным шрифтом с использованием процедур Write и Writeln затруднительно с помощью табуляции выравнивать нецифровые колонки.

Можно изменить шрифт принтера, присвоив подсвойству Font.Nаmе свойства Canvas имя нового шрифта. Прежде чем изменить значения подсвойств Font, следует сначала вызвать AssignPrn и Rewrite.

Пример выбора шрифта Courier New для последующего его использования процедурами Write и Writeln:

with Printer.Canvas do

begin

Font.Nаmе := 'Courier New';

Font.Size := 9;

end;

Выбранный шрифт определяет высоту и ширину символа в пикселях, следовательно, и число строк на странице. Можно использовать любой установленный шрифт, но для печати, как правило, лучше всего подходят шрифты TrueType. Это объясняется тем, что Windows GDI может создавать символы таких шрифтов для любого графического драйвера печати, даже если он непосредственно не поддерживает TrueType. Как правило, для печати используется тот же шрифт, что и для отображения на экране. Если для отображения текста используется такой компонент, как Memo, с помощью следующего оператора свойству Canvas объекта Printer необходимо присвоить значение свойства Font объекта Memo:

Printer.Canvas.Font := Меmo1.Font;

8.3. Диалоговые окна для работы с принтером

Для управления печатью в разных приложениях используются стандартные диалоги.

Для конфигурирования принтера или выбора других принтеров и портов на форме размещается компонент PrinterSetupDialog (страница Dialogs). Объект представлен пиктограммой, которая не отображается во время работы программы. В обработчик события OnClick кнопки или команды меню вводится оператор:

PrinterSetupDialog1.Execute;

Общий диалог печати (компонент PrintDialog) используется для предоставления пользователю возможности управлять режимами печати. Для реализации диалога на форме следует разместить компонент PrintDialog, который невиден во время работы программы.

Пример схемы обработчика события OnClick. Операторы Write и Writeln следует размещаRandomize;

ть в блоке try.

if PrintDialog1.Execute then

begin

AssignPrn(FPrn);

Rewrite(FPrn);

try

{... Запись текста в FPrn}

finally

CloseFile(FPrn);

end;

end;

Использование любой информации, предоставляемой в объекте PrintDialog, зависит от программиста. После вызова Execute, в цикле печати можно применять свойства Copies, FromPage, ToPage и др.

with PrintDialog1 do

for Сору := 1 to Copies do

for Page := FromPage to ToPage do

{...Печать страниц }

end;