Описание |
Директива Default используется двумя отдельными, и весьма различными способами со свойствами (property) для установки обработки заданной по умолчанию.
Версия 1
Когда вы имеете одно или более свойств, которые использут индекс как параметр (см. пример и Index для больших подробностей), вы можете определить директиву по умолчанию (Default). Это позволяет вам использовать более компактный способ использования свойства.
Вместо:
myValue := MyObject.GetItem(23);
Мы можем использовать:
myValue := MyObject.GetItem(23);
Это может cделать код более читаемым и компактным, но может и запутать новичков в Delphi - они будут видеть, что MyObject - не массив и будут находить это трудным для нахождения механизма. Особенно, если класс большой.
Версия 2
Имеет намного больше специализированного использования. Она сохраняет порядковое значение свойства, заданное по умолчанию, в run time информации для класса. Его использование выходит за рамки Основ Delphi.
|
|
Похожие команды |
Private Начинает частный (Private) раздел данных и методов в классе
Property Определяет управляемый доступ к полям класса
Protected Начинает раздел класса частных данных доступных подклассам
Public Начинает внешне доступный раздел класса
Published Начинается изданный, внешне доступный раздел класса
| |
|
Пример кода : Простой пример |
// Полный код Модуля. // ----------------------------------------------------------- //
Вы должны поместить этот код в модуль с именем Unit1 и с формой //
названную Form1, которая имеет событие OnCreate названное FormCreate.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type // Класс с Индексированными
свойствами
TRectangle = class
private
fCoords: array[0..3] of Longint;
function GetCoord(Index: Integer): Longint;
procedure SetCoord(Index: Integer; Value: Longint);
public
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; Default;
end;
// Сам класс формы
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
// Свойство TRectangle подпрограмма 'Получатель'
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 fCoords[Index] := Value;
end;
// Основная линия кода
procedure TForm1.FormCreate(Sender: TObject);
var
myRect : TRectangle;
begin // Создание моего маленького
прямоугольника
myRect := TRectangle.Create;
// И установка угловых
координат myRect.Left := 22; //
Левых, используя прямой метод
myRect.Top := 33; myRect.SetCoord(2,44); //
Правых, используя индексированный метод
myRect.SetCoord(3,55);
// Получение первых двух координат
используя имя метода получения
ShowMessage('myRect coord 0 = '+intToStr(myRect.GetCoord(0)));
ShowMessage('myRect coord 0 = '+intToStr(myRect.GetCoord(1)));
// Теперь используя более компактную
версию для получения сохранённых координат //
Это возможно только, когда мы имеем индексированное свойство 'default'
ShowMessage('myRect coord 1 = '+intToStr(myRect[2]));
ShowMessage('myRect coord 1 = '+intToStr(myRect[3]));
end;
end.
|
myRect coord 0 = 22
myRect coord 1 = 33
myRect coord 2 = 44
myRect coord 3 = 55
|
|