Delphi-Help

  • Increase font size
  • Default font size
  • Decrease font size

Property

Печать
Рейтинг пользователей: / 1
ХудшийЛучший 

Property

Описание

1.Property Name : Type read Getter|nodefault;
2.Property Name : Type write Setter;
3.Property Name : Type read Getter write Setter;
4.Property Name : Type Index Constant read Getter {default : Constant|nodefault;} {stored : Boolean};
5.Property Name : Type Index Constant write Setter {default : Constant|nodefault;} {stored : Boolean};
6.Property Name : Type Index Constant read Getter write Setter {default : Constant|nodefault;} {stored : Boolean};
7.Property Name[Index : IndexType] : BaseType read Getter {default;}
8.Property Name[Index : IndexType] : BaseType write Setter; {default;}
9.Property Name[Index : IndexType] : BaseType read Getter write Setter; {default;}
10.Property Name : Type read Getter implements Interfaces...;
11.Property Name;                  //
Повторно объявленное свойство базового класса
12.Property Name : Type;           //
Только Dispinterface
13.Property Name : Type readonly;  //
Только Dispinterface
14.Property Name : Type writeonly; //
Только Dispinterface

Ключевое слово Property определяет управляемый доступ к полям класса.

Внутренняя организация объекта должна быть скрыта для внешней стороны, это объектно-ориентированного концепция. Пока вы позволяете полям (данным) в классе быть внешне непосредственно доступными (помещая в public или published разделы), это будет являться, по крайней мере, неблагоразумно. Вместо этого, Property может использоваться, чтобы определить, как данные читаются и написаны.

Версии 1, 2 и 3: Эти основные формы определяют доступ чтения, записи или чтения и записи для полей класса. Данные Type возвращают из поля или метода вызванного Получателем. Данные модифицируются через поле или метод Установщик.

Обратите внимание, что Вы должны использовать отличное название для Name от "Getter" и "Setter". Например: Property Age read fAge write fAge; Вы можете использовать имена полей, когда не требуется обработка поиска и проверки. При использовании метода чтения или записи, считанное или записанное значение могут быть намного более просты, чем сохраненное значение. Сохраненное значение может быть полностью различным.

Версии 4, 5 и 6: Использование ключевого слова Index говорит Delphi, чтобы он передал значение Constant как параметр методов Получателя и Установщика. Они должны быть функциями, которые получают это постоянное индексное значение как параметр.

Например: Property Item2 : string Index 2 read ItemGetter; где ItemGetter определен как: Function ItemGetter(Index : Integer) : string; Значение Default обеспечивает информацию для свойства во время выполнения. NoDefault - нет. Stored находится вне области основ Delphi.

Версии 7, 8 и 9: Это - обобщенная версия версий 4,5 и 6. Она просит пользователя указать индексное значение для методов Getter и Setter.

Default позволяет вызовам метода Getter и Setter быть замененными как в следующем примере: myValue := MyClass.Getter(23); может быть заменено : myValue := MyCLass[23];

Версия 10: Позволяет реализации Интерфейс(Interface) метода быть делегированной в свойство. Доступ к свойству, вызывает выполнение интерфейса.

Версия 11: Повторно объявляя свойство родительского класса, вы можете сделать так в public или published пункте, таким образом, поднимая права доступа свойства.

Версии 12, 13 и 14: уместны для dispinterfaces, которые находятся вне области основ Delphi.

Пример кода

// Полный код Модуля.
// -----------------------------------------------------------
// Вы должны поместить этот код в модуль с именем Unit1 и с формой
// названную
Form1, которая имеет событие OnCreate названное FormCreate.

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;

type
//
Класс с Индексированными свойствами
TRectangle = class
private
fArea   : LongInt;
fCoords : array[0..3] of Longint;
function  GetCoord(Index: Integer): Longint;
procedure SetCoord(Index: Integer; Value: Longint);
public
Property Area   : Longint read fArea;
Property Left   : Longint Index 0 read GetCoord write SetCoord;
Property Top    : Longint Index 1 read GetCoord write SetCoord;

Property Right  : Longint Index 2 read GetCoord write SetCoord;
Property Bottom : Longint Index 3 read GetCoord write SetCoord;
Property Coords[Index: Integer] : Longint read GetCoord write SetCoord;

constructor Create;
end;

//
Сам класс формы
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

//
Свойство TRectangle подпрограмма 'Получатель'
//
Конструктор TRectangle
constructor TRectangle.Create;
begin
//
Задание координат прямоугольника по умолчанию
left   := 0;
right  := 100;
top    := 0;
bottom := 100;
fArea  := 100 * 100;
end;

function TRectangle.GetCoord(Index: Integer): Longint;
begin
//
Только разрешенные допустимые индексные значения
if (Index >= 0) and (Index <= 3)
then Result := fCoords[Index]
else Result := -1;
end;

//
Свойство TRectangle подпрограмма 'Установщик'
procedure TRectangle.SetCoord(Index, Value: Integer);
begin
//
Только разрешенные допустимые индексные значения
if (Index >= 0) and (Index <= 3)
then
begin
//
Сохранений нового значения
fCoords[Index] := Value;

//
И обновление площади прямоугольника
fArea := (right - left) * (bottom - top);
end;
end;

//
Основная линия кода
procedure TForm1.FormCreate(Sender: TObject);
var
myRect : TRectangle;
i : Integer;

begin
//
Создание моего маленького прямоугольника с заданными по умолчанию координатами
myRect := TRectangle.Create;

//
И установка угловых координат
myRect.Left := 22;       //
Левых используя прямой метод
myRect.Top  := 33;
myRect.SetCoord(2,44);   //
Правых используя индексированный метод
myRect.SetCoord(3,55);

//
И спрос этих значений
for i:= 0 to 3 do
ShowMessageFmt('myRect coord %d = %d',[i,myRect.GetCoord(i)]);

//
И показ площади прямоугольника
ShowMessageFmt('
площадь myRect= %d',[myRect.Area]);
end;

end.

myRect coord 0 = 22
myRect coord 1 = 33
myRect coord 2 = 44
myRect coord 3 = 55
площадь myRect = 484

Примечание

 

 

Авторизация



Счетчики