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

Свойство представляет собой единство трех сущностей компонентного класса: поля для хранения значения свойства, процедуры с единственным параметром для записи значения и функции без параметров для его чтения. Параметр обращения к процедуре записи и тип функции чтения должны соответствовать типу свойства, а вот поле для хранения значения свойства может иметь отличный от свойства тип или даже вовсе отсутствовать.

СОВЕТ

При создании свойства следуйте принятым в Delphi соглашениям: имена всех трех сущностей должны соответствовать имени свойства и отличаться префиксом: F -для поля, Set-для процедуры записи и Get - для функции чтения. Кроме того, все они должны объявляться в секции private и (или) protected компонентного класса.

Далее показан типичный пример объявления свойства: type TMyClass = class(TComponent) private FMyProperty: Integer; prrotected

procedure SetMyProperty(Value: Integer); virtual; function GetMyProperty: Integer; virtual; published

property MyProperty: Integer read GetMyProperty write SetMyProperty;
end;

Размещение полей в секции private гарантирует, что доступ к ним возможен только внутри методов самого компонента. Объявлять процедуры доступа как виртуальные и размещать их в секции protected нужно только в том случае, когда они должны быть видны наследникам компонентного класса, которые могут их перекрыть, в противном случае их не объявляют виртуальными и размещают в секции private. Само свойство всегда объявляется в секции published, если оно должно быть доступно в окне Инспектора объектов, или public, если оно должно быть доступно только на этапе прогона.

Создание свойств || Оглавление || 7.2. Типы свойств


Искусство создания компонентов Delphi



Новости за месяц

  • Июль
    2020
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс