logo
Объектно-ориентированное программирование и C++

3.6.1.1 Объявления компонентных классов

Опережающие объявления классов Библиотеки Визуальных Компонент VCL, входящей в состав C++Builder, используют модификатор _declspec:

_declspec(<спецификатор>)

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

delphiclass используется для опережающего объявления прямых или косвенных производных от VCL класса TObject. Он определяет правила совместимости VCL при обращении с RTTI, конструкторами, деструктором и исключениями.

delphireturn используется для опережающего объявления прямых или косвенных производных от VCL классов Currency, AnsiString, Variant, TDateTime и Set. Он определяет правила совместимости VCL при обращении с параметрами и возвращаемыми значениями функций-членов.

pascalimplementation указывает, что компонентный класс реализован на Объектном Паскале.

VCL класс имеет следующие ограничения:

• Запрещено наследование виртуальных базовых классов.

• Компонентные классы сами не могут служить базовыми классами для наследования.

• Компонентные объекты создаются в динамической памяти кучи с помощью оператора new.

3.6.1.2 Объявления свойств

C++BuiIder использует модификатор _property для идентификации свойств компонентных классов. Синтаксис описания свойства имеет вид:

property <тип свойства> <имя свойства> = {<список атрибутов>} ;

где список атрибутов содержит перечисление следующих атрибутов свойства:

write = < член данных или метод записи > определяет способ присваивания значения члену данных;

read = < член данных или метод чтения > определяет способ получения значения члена данных;

default = < булева константа > разрешает или запрещает сохранение значения свойства по умолчанию в файле формы с расширением .dim;

stored = < булева константа или функция > определяет способ сохранения значения свойства в файле формы с расширением .dfm.

C++BuiIder использует модификатор _published для спецификации тех свойств компонент, которые будут отображаться Инспектором объектов на стадии проектирования приложения. Если разработчик компоненты желает разрешить модификацию значения некоторого свойства, оно не объявляется как _published. Правила видимости, определяемые этим ключевым словом, не отличаются от правил видимости членов данных, методов и свойств, объявленных как public. Единственное отличие проявляется в том, что во время работы программы Инспектору объектов передается информация RTTI.