Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методичка- програм ХалЗР.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
251.9 Кб
Скачать

Свойства

Свойства – это поля данных, которые влияют на поведение объекта. Они служат для описания объекта и отличаются от обычных полей тем, что присвоение им значений связано с вызовом методов.

Свойства объявляются с помощью слов property, read, write. Свойство связано с некоторым полем и определяет те методы класса, которые должны использоваться при записи в это поле или при чтении из него.

Например:

type TaClass= class

field:integer;

function GetAProperty:integer;

procedure SetAProperty (value:integer);

property AProperty: integer read GetAProperty write SetAProperty;

end;

var AClass:TaClass; value:integer;

Доступ к значению свойства AProperty осуществляется через вызовы методов GetAProperty и SetAProperty. Однако в обращении к этим методам в явном виде нет необходимости, достаточно написать:

AClass.AProperty:=0;

value:= AClass.AProperty;

И компилятор оттранслирует эти операторы в вызовы методов. Таким образом, внешне свойство выглядит в точности как обычное поле, но за всяким обращением к нему могут стоять нужные вам действия.

begin

AClass:=TaClass.Create; {обращение к конструктору перед обращением к полю или свойству}

AClass. AProperty:=0; {подключается метод SetAProperty} ….

value:= AClass. AProperty; {подключается метод GetAProperty} …

AClass.Destroy; {удаление объекта}

end;

Если нет необходимости в специальных действиях при чтении или записи свойства, вместо имени соответствующего метода можно указать имя поля:

type TaClass= class

field:integer;

procedure SetAProperty (value:integer);

property AProperty: integer read field write SetAProperty;

end;

Если необходимо, чтобы свойство было доступно только для чтения или только для записи, следует опустить соответственно часть write или read.

type TAnObject=class(TObject)

function GetAProperty:integer;

property AProperty: integer read GetAProperty;

end;

Свойство может и не связываться с полем. Фактически оно описывает один или два метода, которые осуществляют некоторые действия над данными того же типа, что и свойство.

  1. Программные файлы. Файл проекта. Файл формы

Файл проекта является основным и представляет собой собственно программу. Он содержит код главной программы, с помощью которого создается объект главной формы программы, а также обеспечивается связь программы с Windows. Файл проекта имеет расширение .dpr. Для приложения, включающего в свой состав одну форму, файл проекта имеет вид:

program Project1;

uses

Forms,

Unit1 in ‘Unit1.pas’ {Form1};

{$R *.RES}

begin

Аpplication.Initialize;

Аpplication.CreateForm(TForm1,Form1);

Аpplication.Run;

end.

В разделе uses указывается имя подключаемого модуля Forms, который является обязательным для всех приложений, имеющих формы в своем составе. В разделе uses перечисляются подключаемые модули всех форм проекта, - первоначально это модуль Unit1 формы Form1.

Директива $R подключает к проекту файл ресурсов, который по умолчанию имеет имя, совпадающее с именем файла проекта. Поэтому вместо имени файла ресурса указан символ *. Кроме этого файла, разработчик может подключить к проекту и другие ресурсы, самостоятельно добавив директивы $R и указав в них соответствующие имена файлов ресурсов.

Программа проекта содержит три оператора, выполняющие инициализацию приложения, создание формы Form1 и запуск приложения. Приложение в целом описывается классом TАpplication. При каждом запуске приложения система Delphi автоматически создает объект типа TАpplication с именем Аpplication. По своей сути объект Аpplication является окном Windows. Объект Аpplication недоступен при конструировании приложений, но информация о нем присутствует в исходном файле проекта (.dpr).

В начале работы над новым приложением к файлу проекта автоматически добавляются вызовы трех методов: Initialize, CreateForm, Run. Процедура Initialize инициализирует приложение в целом, при этом выполняются операторы раздела initialization всех модулей приложения. Процедура CreateForm(TForm1,Form1) создает форму, тип которой TForm1, и присваивает ее переменной Form1. Владельцем созданной формы является объект Аpplication. Этот метод вызывается автоматически для каждой формы, принадлежащей приложению. Процедура Run запускает приложение.

Файл формы

Для каждой формы в составе проекта автоматически создаются файл описания (.dfm) и файл модуля (.pas). Файл описания формы содержит характеристики формы и ее компонентов. Разработчик обычно самостоятельно управляет этим файлом, используя окно Конструктора формы и Инспектора объектов. При конструировании формы в файл описания автоматически вносятся соответствующие изменения. Файл модуля формы содержит описание класса формы. Для пустой формы, добавляемой к проекту по умолчанию, файл модуля содержит следующий код:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes,Graphics, Controls, Forms, Dialogs, StdCtrls;

type TForm1=class(TForm)

private { private declarations}

public { public declarations}

end;

var Form1:TForm1;

implementation

{$R *. DFM}

end.

Файл модуля формы создается Delphi автоматически при добавлении новой формы. По умолчанию к проекту добавляется новая форма типа TForm, не содержащая компонентов.

В разделе interface модуля формы содержится описание класса формы, а в разделе inplementation – подключение к модулю директивой $R описания соответствующей формы. При размещении на форме компонентов, а также при создании обработчиков событий в модуль формы вносятся соответствующие изменения. При этом часть изменений автоматически вносит Delphi, а часть – разработчик. Тексты модулей форм отображаются в окне Редактора кода и редактируются с его помощью. Программа может иметь сколько угодно форм, каждая из которых может решать ту или иную задачу и появляется на экране по мере надобности.