Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на Pascal / Delphi / Справочник по компонентам Delphi.doc
Скачиваний:
104
Добавлен:
02.05.2014
Размер:
1 Mб
Скачать

Файлы инициализации

TIniFile = class(TObject)

Этот класс — надстройка над файлом инициализации (его расширение .INI) и процедурами чтения и записи в него значений разных типов. Обратите внимание, что все читаемые и записываемые строки имеют тип string (а не pChar, как в стандартном API Windows).

Конструктор класса

constructor Create(const FileName: string);

создает объект, соответствующий файлу инициализации с именем FileName. В дальнейшем оно доступно через свойство:

(Ro) property FileName: string;

Файл инициализации состоит из строк вида "параметр=значение". Такие строки сведены в секции; имена секций заключаются в квадратные скобки.

Методы класса, посредством которых осуществляется работа с файлом, приве­дены в таблице:

function ReadStringfconst Section, Ident, Default: string): string;

procedure WriteString(const

Возвращает строку из секции Section, являющуюся значением параметра Ident. При отсутствии секции или параметра возвращается строка Default.

Записывает (или перезаписывает) в секцию Section строку Ident=Value.

function Readlnteger(const Section, Ident: string; Default: Longint): Longint;

Возвращает значение параметра Ident из секции Section, преобразованное в целое число. В случае любых ошибок возвра­щается значение Default.

Преобразует Value в строку и записывает его в качестве значения Ident в секции Section.

Работает как Readlnteger, но преобразует значение параметра в булеву переменную.

procedure Writelnteger(const Section, Ident: string; Value: Longint);

function ReadBool(const Section, Ident: string; Default: Boolean): Boolean;

procedure WriteBool(const Section, Ident: string; Value: Boolean);

procedure ReadSection(const Section: string; Strings: TStrings) ;

procedure ReadSectionValues(const Section: string; Strings: TSCrings) ;

Работает, как Writelnteger, но преобразует булево значение Value к виду '0'/"Г.

Считывает в набор строк Strings секцию с именем Section. Максимальная длина секции — 8191 байт.

Считывает из секции Section в набор строк Strings только значения параметров.

procedure EraseSection(const Section: string);

Удаляет всю секцию с именем Section.

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

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

TPrinter = class(TObject)

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

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

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

(Ro) property Printers: TStrings;

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

property Printerlndex: Integer;

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

Метод

procedure GetPrinter(ADevice, ADriver, APort: PChar;

var ADeviceMode: THandle);

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

Метод

procedure SetPrinter(ADevice, ADriver, APort: PChar;

ADeviceMode: THandle);

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

Свойство

(Ro) property Fonts: TStrings;

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

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

property Orientation: TPrinterOrientation;

TPrinterOrientation = (poPortrait, poLandscape) ;

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

(Ro) property PageHeight: Integer;

(R^ property PageWidth: Integer;

Свойство

property Title: string;

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

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

(Ro) property Handle: HDC;

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

(Ro) property Canvas: TCanvas;

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

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

-

procedure BeginDoc;

Начинает печать документа.

procedure EndDoc;

Завершает печать документа.

(Ro) property Printing: Boolean; procedure Abort;

Определяет состояние процесса. Возвращает True во время печати.

Используется для прерывания печати.

(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. В следующем примере при нажатии кнопки PrintBfcn печатается изображение из компо­нента Printlmage:

procedure PrintForm.PrintBtnClick(Sender: TObject);

begin

with Printer do begin

BeginDoc;

Canvas.Draw(0, 0, Printlmage.Picture.Graphic);

EndDoc ;

end;

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

Соседние файлы в папке Delphi