Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LYeKTsII_GURSKOGO_1.doc
Скачиваний:
10
Добавлен:
16.11.2019
Размер:
3.31 Mб
Скачать

Компонент tPrintDialog

TPrintDialog

Эта компонента позволяет организовать управление принтером и устанавливать его свойства.

Свойства:

Collate: Boolean;

Если

Collate = true;

то можно использовать свойство CheckBox “Разобрать”. При этом сначала будет печататься первая копия, затем вторая и т.д.;

Если

Collate = false;

сначала будут печататься все первые страницы, затем вторые и т.д.;

Copies: Integer

- указывает количество копий. Если Copies = 0; то будет печататься одна копия.

FromPage: Integer

- определяет начальную страницу печати;

ToPage : Integer

- определяет конечную страницу печати;

PrintRange =(prAllPages, prSelection, prPageNums);

- определяет диапазон печатаемых страниц.

10. Программирование печати документов

Для обслуживания принтера используется специальный класс TPrinter, который описан в модуле Printers. Класс TPrinter инкапсулирует функции Windows по обслуживанию принтера. В модуле Printers на базе класса TPrinter создан объект

Printer: TPrinter;

который используется в программах.

Свойства класса TPrinter:

Canvas;

- это дисплейный контекст принтера, в котором происходит вывод информации.

Fonts;

- содержит список шрифтов, поддерживаемых принтером.

Orientation = (poPortrait, poLandscape);

- позволяет задавать тип расположения информации на листе;

PageHeight;

- содержит размер текущей принтерной страницы в пикселях

PageNumber;

- содержит номер текущей принтерной страницы. Это значение увеличивается на единицу при каждом вызове метода NewPage. Свойство только для чтения;

PageWidth;

- ширина принтерной страницы;

Printers;

- содержит список всех принтеров, доступных приложениям. Свойство только для чтения;

PrinterIndex;

- указывает, какой из принтеров в списке является текущим. Чтобы использовать принтер “по умолчанию” следует положить

PrinterIndex = -1;

Title;

- позволяет задавать заголовок страницы.

П ример.

Unit DemoPrinter;

Interface

Uses

, Printers;

Type

TForm1 = class (TForm)

ComboBox1: TComboBox;

ComboBox2: TComboBox;

RadioButton1: TRadioButton;

RadioButton2: TRadioButton;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Button1: TButton;

Button2: TButton;

Procedure FormCreate(Sender: TObject);

Procedure RadioButton1Click(Sender: TObject);

Procedure Button1Click(Sender: TObject);

Procedure Button2Click(Sender: TObject);

end;

var

Form1: TForm1;

Interface

Procedure TForm1.FormCreate(Sender: TObject);

begin

//вывести список принтеров

ComboBox1.Items := Printer.Printers;

//вывести список поддерживаемых шрифтов

ComboBox2.Items := Printer.Fonts;

ComboBox1.ItemsIndex := 0;

ComboBox2.ItemsIndex := 0;

//по умолчанию ориентация страницы poPortrait

RadioButton1.Checked := true;

Printer.Orientation := poPortrait;

//получить текущую высоту листа

Edit1.Text := IntToStr(Printer.PageHeight);

//получить текущую ширину листа

Edit2.Text := IntToStr(Printer.PageWidth);

//активизировать Edit3

ActiveControl := Edit3;

end;

Procedure TForm1.RadioButton1Click(Sender: TObject);

begin

if (Sender as TRadioButton).Checked then

if (Sender as TRadioButton).Caption = ‘Горизонтальная’

then Printer.Orientation := poLandScape

else Printer.Orientation := poPortrait;

end;

Procedure TForm1.Button1Click(Sender: TObject);

begin

Printer.Title := Edit3.Text;

end;

Procedure TForm1.Button1Click(Sender: TObject);

begin

Printer.Title := Edit3.Text;

end;

Procedure TForm1.Button2Click(Sender: TObject);

begin //печать информации

Print; //вывод содержимого формы или

if PrintDialog1.Execute then Form1.Print;

end;

end;

Методы класса TPrinter:

Abort;

- аварийное завершение вывода на печать. Этот метод используется, если пользователь решил прервать печать досрочно.

Пример.

Procedure TForm1.FormKeyDown(Sender: TObject; var Key; Word; Shift: TShiftState);

begin

//если во время печати нажата клавиша ESC

if (Key = vk_ESCAPE) and Printer.Printing then

begin

Printer.Abort;

MessageDlg(‘Печать прервана‘, mtInformation, [mbOK],0);

end;

end;

BeginDoc;

- посылает информацию на принтер;

EndDoc;

- начало процесса печати;

NewPage;

- переход на новый лист печати. Этот метод увеличивает на 1 свойство PageNumber и устанавливает курсор в координату (0, 0);

Базовые операции с принтером

Последовательность использования методов принтера следующая:

  1. Вызов метода BeginDoc.

  2. Вывод информации на Canvas.

  3. Распечатка документа с помощью метода EndDoc.

Пример.

begin

Printer.BeginDoc;

//вывод информации

Printer.Canvas.TextOut(10, 10, ‘Печать’);

Printer.Canvas.Rectangle(10, 10, 100, 100);

Label1.Caption := ’Печать страницы #’+IntToStr

(Printer.PageNumber);

Printer.NewPage;

Printer.EndDoc;

end;

Вывод текстовой информации

Покажем, как вывести информацию компонента TMemo. Для этого воспользуемся рядом процедур модуля Printers.

var

TextPrint : System.Text;

Line : Integer;

begin

//ассоциируем значение текстовой переменной с принтером

AssignPrn(TextPrint);

//открыть файл

Rewrite(TextPrint);

//печать тем же шрифтом, что и в Memo

Printer.Canvas.Font := Memo1.Font;

//вывод содержимого Memo1

for Line := 0 to Memo1.Lines.Count-1 do

Writeln(TextPrint.Memo1.Lines[Line]);

//завершить вывод информации

System.Close;

end;

Распечатка содержимого ASCII-файла.

Procedure PrintFile(FileName: String);

var

F : TextFile;

S : String;

Row: Integer;

begin

AssignFile(F, FileName);

Reset(F);

Row := 0;

Printer.BeginDoc;

While not eof(F) do

begin

Readln(F, S);

Printer.Canvas.TextOut(0, Row, S);

Row := Row + 20;

if Row >= Printer.PageHeight then Printer.NewPage;

end;

Printer.EndDoc;

CloseFile;

end;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]