Разместите нашу кнопку!

Новые статьи:

Programming articles

Создание сайтов на шаблонах

Множество вариантов работы с графикой на канве

Шифруем файл с помощью другого файла

Перехват API функций - Основы

Как сделать действительно хороший сайт

Создание почтового клиента в Delphi 7

Применение паскаля для решения геометрических задач

Управление windows с помощью Delphi

Создание wap сайта

Операционная система unix, термины и понятия

SQL враг или друг

Возникновение и первая редакция ОС UNIX

Оптимизация проекта в Delphi

Ресурсы, зачем нужны ресурсы

Термины программистов 20 века

Советы по созданию собственного сайта с нуля

Шифруем файл с помощью пароля

Фракталы - геометрия природы

Crypt - Delphi программа для шифрования

Рассылка, зачем она нужна и как ее организовать?

Учебник по C++ для начинающих программистов

Уроки для изучения ассемблера

Загадочный тип PCHAR

Средства по созданию сайтов

Операторы преобразования классов is и as

Borland Developer studio 2006. Всё в одном

Создание базы данных в Delphi, без сторонних БД


Software engineering articles



Default

Задает обработку по умолчанию для свойства

  1. Indexed property declaration; Default
  2. Ordinal property declaration Default Ordinal constant;

Описание:

    Директива Default используется в двух отдельных, и весьма разных случаях для задания обработки по умолчанию свойств.

     Вариант 1.
     Когда у вас есть одно или более свойство, которое использует индекс в качестве параметра (см. пример и Index для дальнейших деталей), вы можете определить директиву Default. Она предлагает более компактный способ использования свойства.

     Вместо:

myValue := MyObject.GetItem(23);

     Мы можем использовать:

myValue := MyObject[23];

     Это может сделать код более компактных и читабельным, но может ввести в недоумение новичков в Delphi - они увидят, что MyObject - это не массив, и им будет трудно найти механизм работы этого. Особенно если класс большой.

     Вариант 2.
     Имеет намного более специализированную область применения. Она сохраняет заданное порядковое значение по умолчанию для свойства класса в информации времени выполнения этого класса. Ее использование выходит за рамки Основ Delphi.

Пример кода:

// Full Unit code.
// -----------------------------------------------------------
// You must store this code in a unit called Unit1 with a form
// called Form1 that has an OnCreate event called FormCreate.

unit Unit1;

interface

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

type
   // Class with Indexed properties
   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;

   // The form class itself
   TForm1 = class(TForm)
      procedure FormCreate(Sender: TObject);
   end;

var
   Form1: TForm1;

implementation

{$R *.dfm}

// TRectangle property 'Getter' routine
function TRectangle.GetCoord(Index: Integer): Longint;
begin
   // Only allow valid index values
   if (Index >= 0) and (Index <= 3)
   then Result := fCoords[Index]
   else Result := -1;
end;

// TRectangle property 'Setter' routine
procedure TRectangle.SetCoord(Index, Value: Integer);
begin
   // Only allow valid index values
   if (Index >= 0) and (Index <= 3)
   then fCoords[Index] := Value;
end;

// Main line code
procedure TForm1.FormCreate(Sender: TObject);
var
   myRect : TRectangle;

begin
   // Create my little rectangle
   myRect := TRectangle.Create;

   // And set the corner coordinates
   myRect.Left := 22; // Left using direct method
   myRect.Top := 33;
   myRect.SetCoord(2,44); // Right using indexed method
   myRect.SetCoord(3,55);

   // Get the first two coords using the get method name
   ShowMessage('myRect coord 0 = '+intToStr(myRect.GetCoord(0)));
   ShowMessage('myRect coord 0 = '+intToStr(myRect.GetCoord(1)));

   // Now use the more compact version to get the remaining coords
   // This is only possible when we have a 'default' indexed property
   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