Delphi справочник - Форум программистов - Навигация  
 A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z      По первой букве  
System     SysUtils     StrUtils     DateUtils     FileCtrl     ConvUtils     StdConvs     Math     Classes     Dialogs     Types     Variants    ПО Unit   Compiler directives     Directives     Keywords     Types     Variables     Constants     Functions     Procedures    По категории  

форум программистов

Основы Delphi
Property
Ключевое слово
Определяет управляемый доступ к полям класса System unit
  
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.
Похожие команды
Index  Определяет преимущественно индексированные классы свойств данных

Private  Начинает частный (Private) раздел данных и методов в классе

Protected  Начинает раздел класса частных данных доступных подклассам

Public  Начинает внешне доступный раздел класса

Published  Начинается изданный, внешне доступный раздел класса

 
Пример кода : Иллюстрирование основных и индексированных свойств
// Полный код Модуля.
// -----------------------------------------------------------
// Вы должны поместить этот код в модуль с именем 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
 


Оплата за обучение в Kata Academy только после твоего трудоустройства в IT, начни карьеру Middle Java-разработчика



Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки? Slurm подготовили для вас особенный продукт!





форум программистов


© Форум Delphi  |  Форум Pascal   |  Блог программистов   |  Исходники Delphi   |  Автор сайта  |  Ссылки   |  Английская версия