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
Default
Деректива
Определяет обработку для property используемую по умолчанию unit
  
1 Indexed property declaration; Default

2 Ordinal property declaration Default Ordinal constant;
Описание
Директива 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
 



© Форум Delphi   |  Блог программистов   |  Создание и продвижение сайтов - "Веб сателлит"  |  Ссылки   |  Английская версия