Вход


Главная страница >> Учебный процесс >> Конспекты >> Delphi. Библиотека визуальных компонентов VCL >> Приложение и среда его выполнения >> Приложение и среда его выполнения. Печать данных из приложения
Переход на главную страницу

Сервер поддерживается
кафедрой информатики и вычислительной техники ГрГУ
тел. +375-(0)152-445-101
E-mail :
kadan@grsu.grodno.by


[Назад]    [Содержание ]    [Вперед]

  


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


Практически каждое приложение, работающее в Windows, имеет набор возможностей, позволяющих печатать те или иные данные. В состав Delphi включен специальный модуль ? PRINTERS, в котором описан класс TPrinter, инкапсулирующий интерфейс печати Windows.

TPrinter = class(TObject)

Свойства и методы этого класса позволяют разработчику реализовать достаточно широкий набор возможностей для печати из приложения. Экземпляр объекта TPrinter с именем Printer создается автоматически при запуске приложения, если в его состав включен соответствующий модуль.

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

Информацию обо всех инсталлированных в системе принтерах содержит список свойства:

(Ro) property Printers: TStrings;

Свойство доступно только при выполнении приложения. Информация о том, какой принтер из списка является текущим, содержится в свойстве:

property PrinterIndex: Integer;

Оно возвращает порядковый номер принтера в списке. Значение -1 используется для идентификации принтера, установленного по умолчанию.

Метод

procedure GetPrinter(ADevice, ADriver, APort: PChar; var ADeviceMode: THandle);

возвращает параметры текущего принтера, используя для его идентификации значение свойства Printerlndex.

Метод

procedure SetPrinter(ADevice, ADriver, APort: PChar; ADeviceMode: THandle);

проверяет, инсталлирован ли в системе принтер с заданными параметрами. В случае успеха этот принтер становится текущим, в случае неудачи инсталлируется новый принтер. Использование этих двух методов не рекомендуется справочным руководством, так как по мнению разработчиков вполне достаточно свойств Printers и PrinterIndex. Авторы также рекомендуют применять эти методы только подготовленным разработчикам, если им необходимо работать с драйверами принтеров.

Свойство

(Ro) property Fonts: TStrings ;

содержит список шрифтов, поддерживаемых текущим принтером. Свойство доступно только при выполнении приложения.

Расположение листа бумаги определяется свойством:

property Orientation: TPrinterOrientation;

TPrinterOrientation = (poPortrait, poLandscape) ;

Свойство доступно только при выполнении приложения. Высоту и ширину листа бумаги содержат свойства:

(Ro) property PageHeight: Integer;

(Ro) property PageWidth: Integer;

Свойство

property Title: string;

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

Дескриптор принтера, с которым связан объект TPrinter, возвращается в свойстве:

(Ro) property Handle: HDC;

Поверхность печатаемой страницы доступна для вывода графических объектов (например, изображений) через свойство:

(Ro) property Canvas: TCanvas;

При использовании канвы необходимо проверить используемый принтер на предмет поддержки графики. Свойство доступно только при выполнении приложения.

Для управления процессом печати объект содержит набор методов и свойств:

procedure BeginDoc; Начинает печать документа.
procedure EndDoc; Завершает печать документа.
(Ro) property Printing: Boolean; Определяет состояние процесса. Возвращает True во время печати.
procedure Abort; Используется для прерывания печати.
(Ro) property Aborted: Boolean; Устанавливается в True, если печать прервана.
procedure NewPage; Отменяет печать текущей страницы и начинает распечатку следующей. При этом значение свойства PageNumber увеличивается на единицу.
(Ro) property PageNumber: Integer; Содержит номер печатаемой страницы. Обращение к нему имеет смысл только в процессе печати документа.

В модуле PRINTERS описан метод

procedure AssignPrn(var F: Text);

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

procedure PrintForm.PrintBtnClick (Sender: TObject);
var
═══PrnTxt: System.Text;
═══i: Integer;
begin
═══AssignPrn(PrnTxt) ;
═══Rewrite(PrnTxt) ;
═══for i := 0 to PrintMemo.Lines.Count -1 do
══════Writeln(PrnTxt, PrintMemo.Lines[ i ] );
═══CloseFile(PrnTxt);
end;

Для печати графики необходимо передать требуемый графический объект (изображение, график, фигуру) в канву объекта Printer. В следующем примере при нажатии кнопки PrintBtn печатается изображение из компонента PrintImage:

procedure PrintForm.PrintBtnClick(Sender: TObject);
begin
═══with Printer do begin
══════BeginDoc;
══════Canvas.Draw(0, 0, PrintImage.Picture.Graphic);
══════EndDoc;
═══end;
end ;

При необходимости пропорции распечатываемого графического объекта можно скорректировать при помощи свойства формы-контейнера PrintScale.



[Назад]    [Содержание ]    [Вперед]

  


Для комментария : kadan@grsu.grodno.by

  
За содержание страницы отвечает Гончарова М.Н.
©
Кафедра СПиКБ, 2002-2017