Энциклопедия C++ Builder




ИСПОЛЬЗОВАНИЕ И СОЗДАНИЕ ВИЗУАЛЬНЫХ КОМПОНЕНТ - часть 6


Графические компоненты не могут служить контейнерами для других элементов управления, т.е. не могут владеть другими компонентами.

6.2.4 Невидимые компоненты

Во время выполнения программы невидимые компоненты не появляются на форме в виде каких-либо элементов управления. Поведение невидимых компонент определяется на этапе проектирования, путем инкапсуляции нужных свойств объекта.

С помощью Инспектора объектов вы можете модифицировать свойства невидимых компонент и предусматривать код обработчиков событий для них. Примерами таких компонент являются TOpenDialog, TTable или TTimer.

6.2.5 Контейнерные компоненты

Некоторые компоненты в VCL могут владеть другими компонентами или являться родителями других компонент. Указанные аспекты имеют разное смысловое значение, что и проясняется в следующих параграфах.

6.2.5.1 Право владения

Любая компонента может находиться во владении (ownership) других компонент, но не все компоненты могут являться владельцами. Свойство компоненты

Owner (Владелец) содержит ссылку на компоненту, которая ею владеет. Рис. 6.2 показывает иерархию владения некоторой формы.

wpe9.jpg (8379 bytes)

Рис. 6.2. Пример иерархии владения.

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

Владение применимо не только к видимым, но и к невидимым (Ttimer, DataSource) компонентам.

Когда компонента создается динамически в процессе выполнения программы, конструктору компоненты передается ее владелец в качестве параметра. В следующем примере неявный владелец формы (this)

передается конструктору компоненты

TButton как параметр. TButton выполнит присваивание значения переданного параметра свойству Owner

кнопки MyButton:

MyButton = new TButton(this);

Когда форма, владеющая компонентой

TButton освобождается, автоматически уничтожается и кнопка

MyButton.




Содержание  Назад  Вперед