Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры ТП!!.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
458.75 Кб
Скачать

19. Понятие компоненты. Типы компонент. Свойства. Контейнерные компоненты.

Революционным шагом, облегчившим жизнь программистов, явилось появление визуального программирования, возникшего в Visual Basic и нашедшего дальнейшее воплощение в Delphi и C++ Builder фирмы Borland. Интегрированная среда разработки (IDE) предоставляет программисту формы, на которых размещаются компоненты из библиотеки компонентов. Их размеры и форма может быть изменена с помощью простых манипуляций. При этом все время в процессе проектирования виден результат. Среда разработки автоматически формирует коды программы, включая в нее фрагменты, описывающие каждый компонент. Проектирование, фактически, сводится к размещению компонентов на форме, заданию некоторых их свойств и написанию обработчиков событий.

Первым шагом в разработке приложения является создание проекта. Файлы проекта содержат сгенерированный автоматически исходный текст, который становится частью приложения, когда оно скомпилировано и подготовлено к выполнению. Проект обычно имеет несколько форм. Добавление формы к проекту создает следующие дополнительные файлы: файл формы с расширением DFM, содержащий информацию о ресурсах окон для конструирования формы; файл модуля с расширением CPP, содержащий код на C++; заголовочный файл с расширением H, содержащий описание класса формы.

На первый взгляд компоненты ничем не отличаются от других объектных классов языка C++, за исключением ряда особенностей: большинство из них представляют собой элементы управления интерфейсом с пользователем; они являются потомками класса TComponent; компоненты обычно используются непосредственно, они сами не могут служить базовыми классами для построения новых подклассов; они размещаются только в динамической памяти (heap) с помощью оператора new, а не на стеке, как объекты обычных классов; свойства компонент заключают в себе RTTI - идентификацию динамических типов; компоненты можно добавлять к Палитре компонентов.

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

Свойства являются атрибутами компонента, определяющими его внешний вид и поведение. Инспектор объектов отображает опубликованные (published) свойства компонентов и используется для их установки во время проектирования. Помимо published-свойств, компоненты могут и чаще всего имеют общие (public) свойства, которые доступны только во время выполнения приложения. При определении свойств компонента во время проектирования нужно выбрать его на форме, открыть страницу свойств (Properties) в инспекторе объектов, выбрать определяемое свойство и изменить его с помощью редактора свойств.

Страница событий (Events) инспектора объектов показывает список событий, распознаваемых компонентом. При помощи событий компонент сообщает пользователю о том, что на него оказано некоторое предопределенное воздействие. Обработчики событий (event handlers) реализуют реакцию программы на возникновение определенных событий.

Контейнерные компоненты могут владеть другими компонентами или являться родителями других компонентов. Любая компонента может находиться во владении другими компонентами. Свойство owner содержит ссылку на компоненту, которая владеет текущей. Владелец ответствен за освобождение компоненты, которой владеет. При динамическом создании компоненты ее конструктору необходимо передать указатель на владельца в качестве параметра конструктора. Если в качестве указателя передать 0, то у компонента не будет владельца и для ее удаления требуется принудительно вызвать операцию delete. Свойство component содержит перечень компонент, которыми владеет данный компонент, в виде массива. Свойство ComponentCount содержит число компонент владельца.

Примером контейнерной компоненты является TPanel, TToolBox, TTabControl, TPageControl.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]