Автор: Пользователь скрыл имя, 06 Февраля 2013 в 01:52, аттестационная работа
Класс TList -- универсальный список. Он представляет собой массив нетипированных указателей и поэтому годится для хранения набора любых, в том числе разнотипных, данных и объектов. При добавлении/удалении в список данные не создаются и не уничтожаются -- эта обязанность лежит на программисте. Приведем доступные ему методы и свойства класса.
procedure Open;
procedure Close;
вызываются во всех остальных методах TClipboard, поэтому программист редко нуждается в обращении к ним. В объекте ведется счетчик числа обращений к этим функциям, так что соответствующие функции API Windows вызываются только при первом открытии и последнем закрытии.
Очистка содержимого буфера (для всех форматов) производится вызовом метода:
procedure Clear;
О доступных форматах можно узнать, пользуясь следующими свойствами и методами:
(Ro) property FormatCount: Integer;
-- содержит число форматов в буфере на данный момент;
(Ro) property Formats[Index: Integer]: Word;
-- содержит их полный список. Функция
function HasFormat(Format: Word): Boolean;
проверяет, содержится ли в данный момент формат Format.
Волею разработчиков различаются способы обмена графической и текстовой информацией через буфер обмена. Рассмотрим их независимо.
Через вызов метода
procedure Assign(Source: TPersistent);
в буфер обмена помещаются данные классов TGraphic, точнее, его потомков -- классов TBitmap (формат CF.BITMAP) и TMetaffle (CF.METAFILEPICT). Данные класса TIcon не имеют своего формата и с TClipboard несовместимы.
Допустимо и обратное: в TClipboard есть специальные (скрытые) методы для присваивания содержимого объектам классов TPicture, TBitmap и TMetafile. Допустимы выражения вида:
My Image.Picture.Assign(
Для работы с текстом предназначены методы:
function GetTextBuf(Buffer: PChar; BufSize: Integer): Integer;
-- читает текст из буфера обмена в буфер Buffer, длина которого ограничена значением BufSize. Функция возвращает истинную длину прочитанного текста;
procedure SetTextBuf(Buffer: PChar);
-- помещает текст из Buffer в буфер обмена в формате CF_TEXT;
Свойство
property AsText: string;
соответствует содержимому буфера обмена в текстовом формате CF_TEXT
(приведенному к типу string). При отстутствии там данных этого формата возвращается пустая строка.
Методы
function GetAsHandle(Format: Word): THandle;
procedure SetAsHandle(Format: Word; Value: THandle);
соответственно читают и пишут данные в буфер в заданном формате Format. При чтении возвращается дескриптор находящихся в буфере данных (или О при отсутствии). Для дальнейшего использования эти данные должны быть скопированы. При записи данные, передаваемые в параметре Value, в дальнейшем должны быть уничтожены системой (а не программой пользователя).
Два метода предназначены для обмена компонентами через буфер обмена (в специально зарегистрированном формате CF_COMPONENT):
function GetComponent(Owner, Parent: TComponent): TComponent;
procedure SetComponent(Component: TComponent);
Они используются составными частями среды Delphi.
Компонент TScreen
TScreen = class(TComponent);
Этот компонент представляет свойства дисплея, на котором выполняется приложение. Поскольку экземпляр данного класса только один (он создается системой при запуске приложения), то большинство методов и свойств имеют информационный характер и недоступны для записи.
Курсор приложения, общий для всех форм, доступен через свойство:
property Cursor: TCursor;
Часто приходится включать "песочные часы" на время выполнения длительной операции. Лучше всего это сделать следующим образом:
Screen.Cursor := crHourglass;
try
(Calculations...} finally
Screen.Cursor := crDefault;
end;
Возвращает дескриптор курсора с индексом Index свойство:
property Cursors[Index: Integer]: HCURSOR;
Няпомшм, что шщексы зарегистрированных курсоров лежат в диапазоне от -17 (crSQLWait) до 0 (crDefault).
Рассмотренный ниже фрагмент кода при инициализации формы заносит имена всех зарегистрированных в системе курсоров в список ListBoxl. Затем, при выборе элемента списка, устанавливается соответствующий ему курсор.
procedure TFormI.FormCreate(Sender: TObject);
type
TGetStrPunc = function(const Value: string): Integer of object;
var
CursorNames: TStringList;
AddValue: TGetStrPunc;
begin
CursorNames := TStringList.Create;
AddValue := CursorNames.Add;
GetCursorValues(TGetStrProc(
ListBoxl.Items.Assign(
end;
procedure TFormI-ListBoxlClick(Sender: TObject);
begin Screen.Cursor :=
StringToCursor(ListBoxl.Items[
end;
Имена всех установленных в системе шрифтов помещаются в список, опреде-ленньш в свойстве:
(Ro\ property Fonts: TStrings;
Компонент сообщает неизменяемые свойства экрана (в данном видеорежиме). Его размеры в пикселах определены в свойствах:
(ro) property Height: Integer;
(Ro) property Width: Integer;
Число точек на дюйм дисплея содержится в свойстве:
(Ro) property PixelsPerInch: Integer;
При появлении каждая форма заносит себя в список форм глобального объекта Screen. Два (доступных только для чтения) свойства дают информацию об этом списке:
J property Forms[Index: Integer]: TForm;
property FormCount: Integer;
Нужно иметь в виду, что в списке указаны только формы, открытые приложением, а не все окна системы.
Следующие два свойства указывают на активную в данный момент форму и ее активный элемент управления:
(Ro) property ActiveControl: TWinControl;
(ro) property ActiveForm: TForm;
При их изменении генерируются соответственно события:
property OnActiveControlChange: TNotifyEvent;
property OnActiveFormChange: TNotifyEvent;
Файлы инициализации
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(
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(
begin
with Printer do begin
BeginDoc;
Canvas.Draw(0, 0, Printlmage.Picture.Graphic);
EndDoc ;
end;
При необходимости пропорции распечатываемого графического объекта можно скорректировать при помощи свойства формы-контейнера PrintScale.
Компонент TSession
TObject-->TPersistent->
Модуль DB
В Палитре компонентов отсутствует
Осуществляет общее управление процессом связывания базы данных с приложением. Он отсутствует в Палитре компонентов Delphi и создается автоматически при выполнении приложения, при этом ему присваивается имя Session. Объект обладает рядом методов, которые позволяют получать и использовать информацию о связях с базой данных. Все свойства объекта доступны только при выполнении приложения и в режиме "Только для чтения". Исключение составляют свойства KeepConnections, NetFileDir и PrivateDir, значения которых можно изменять.
Свойства компонента
(Rc/f property DatabaseCount: Integer; |
Определяет число экземпляров компонента TDatabase, используемых в приложении в настоящее время. |
(Rd property Databases[Index: Integer]: TDatabase; |
Содержит список всех экземпляров компонента TDatabase, использующихся в приложении в настоящее время. |
(Ro) property Handle: HDBISES; property KespConnections: Boolean; |
Дескриптор компонента, используется для организации прямого доступа к функциям API BDE. |
Определяет режим соединения с базой данных. В значении True соединение будет поддерживаться до завершения приложения или до вызова метода DropConnection. В значении False соединение прерывается сразу после закрытия всех наборов данных текущей базы. |
(Ro) property Locale: TLocale; TLocale = Pointer; |
Содержит информацию о языковом драйвере BDE. |
property NetFileDir: String; |
Определяет каталог, содержащий сетевой файл управления BDE -- PDOXUSRS.NET, предназначенный для соединения с таблицами Paradox. |
property PrivateDir: String; |
Определяет каталог, хранящий временные файлы. |
Методы компонента
procedure AddPassword(const Password: String); |
Позволяет задать пароль для доступа к таблицам Paradox. |
procedure CloseDatabase(Database: TDatabase) ; |
Закрывает компонент TDatabase, идентифицируемый по параметру Database. |
procedure DropConnections; |
Прерывает все соединения с неактивными базами данных (не имеющими открытых приложением наборов данных). |
function FindDatabase(const DatabaseName: String): TDatabase; |
Проводит поиск компонента базы данных в списке свойства Databases по имени, которое задается параметром метода. Возвращает указатель на экземпляр компонента TDatabase. |
procedure GetAliasNames(List: TStrings); |
Очищает список, передаваемый в параметре List метода и заполняет его именами всех определенных в BDE псевдонимов. |
procedure GetAliasParams(const AliasName: String; List: TStrings); |
Очищает и заполняет список List параметрами псевдонима, задаваемого параметром AliasName. |
procedure GetDatabaseNames(List: TStrings) ; |
Возвращает список List имен всех баз данных, определенных в BDE и приложении. |
procedure GetDriverNames(List: TStrings) ; |
Очищает и заполняет список List, передаваемый параметром метода, именами всех установленных в BDE драйверов. |
procedure GetDriverParams(const DriverName: String; List: TStrings) ; |
Очищает и заполняет список параметрами драйвера BDE. Параметр DriverName задает имя драйвера, параметр List определяет список. |
function GetPassword: Boolean; |
Показывает стандартный диалог ввода пароля. Возвращает True при нажатии кнопки ОК и False при нажатии Cancel. |