Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка DELPHI.DOC
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
2.73 Mб
Скачать

Типы ссылки на класс

Такой программный элемент, как тип обычной переменной, представляющий собой правила обращения с теми или иными переменными, существует только во время компиляции программы. Эти правила не могут измениться во время выполнения программы. Типы ссылки на класс, которые синтаксически объявляются как Class of TmyClass позволяют нарушить указанные правила. С помощью этих типов можно обращаться к объектным типам во время выполнения программы. Для некоторого заданного типа объектный тип – это значение, которое можно записать в переменную типа ссылки на класс. Во время выполнения программы в разных её участках переменной данного типа можно присваивать в качестве значения различные объектные типы и, таким образом, строить нужные объекты, вызывая тот или иной виртуальный конструктор.

Свойства

Свойства представляют интерфейс с внутренними полями данных того или иного объекта. Внутренние поля обычно объявляются в разделе Private. Их имена, как правило, начинаются с буквы F, например поле FColor. Соответственно свойство, с помощью которого осуществляется доступ к заданному полю FColor, имеет имя Color. Свойства могут объявляться с различной степенью доступа. Если требуется, чтобы они отображались в окне инспектора объектов, их объявляют в разделе Published.

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

  1. Simple – простые свойства;

  2. Enumerated – перечисляемые;

  3. Set – множества;

  4. Object – объектного типа;

  5. Array – индексированные свойства.

Разные типы свойств по-разному отображаются в инспекторе объектов и имеют свои собственные редакторы для изменения значений свойств. Далее рассмотрим синтаксис записи различных видов свойств.

Свойства simple

Простые свойства включают числовые, символьные и строковые типы данных. Наиболее часто используются свойства типа integer и string. Например, свойства Width, Height имеют тип integer, свойство Caption имеет тип string. Объявим для демонстрации синтаксиса записи простых свойств следующий класс:

Type

TSimple=class(TCustomControl)

Private

FString: string;

Published

Property StringProp:string

read FString write FString;

end;

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

Свойства enumerated

Свойства enumerated определяются типом перечень и логическим типом Boolean. Обычно все возможные значения данного типа свойств некоторым способом помечаются, например, как в объявлениях ниже:

Type

TEnumProp=(epZero, epOne, epTwo, epThree);

TEnum=class(TCustomControl)

Private

FEnumProp: TEnumProp;

Published

Property EnumProp: TEnumProp

read FEnumProp write FEnumProp;

end;

Свойства set

Элементы свойства Set (множество) в инспекторе объектов заключаются в квадратные скобки. Для развёртывания элементов базового множества, включающего в себя все возможные варианты, имеется знак + (плюс), расположенный слева от наименования свойства. Включить или не включить тот или иной элемент из базового множества в рабочее множество, выбирается путём указания true или false. Рабочее множество определяет значение данного свойства. Рассмотрим пример объявления свойства Set. При этом используется тип TEnumProp, объявленный выше.

Type

TSetProp=set of TEnumProp

TSetClass=class(TCustomControl)

Private

FSetProp:TSetProp;

Published

Property SetProp:TsetProp

read FSetProp write FSetProp;

End;