Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции програм_new_последняя версия1.doc
Скачиваний:
14
Добавлен:
14.09.2019
Размер:
697.34 Кб
Скачать

Собственники компонентов

Для компонентов предусмотрены отношения собственности. Любой компонент Delphi является собственностью другого компонента и, в свою очередь, может быть владельцем одного или нескольких компонентов. Это позволяет существенно упростить процесс управления ими.

Владелец назначается компоненту при вызове конструктора:

Constructor Create (AOwner: TComponent);virtual;

Указатель на владельца хранится в свойстве компонента:

property Owner:TComponent read FOwner;

Это свойство доступно только для чтения.

Список всех подчиненных компонентов определяет свойство:

property Components[Index: Integer]:TComponent;

Если вызван конструктор компонента, то он автоматически вызывает конструкторы всех подчиненных ему компонентов. Поэтому и нет явных вызовов конструкторов объектов в текстах кодов, созданных во время визуального программирования. Напомним, что связи между компонентами, помещенными в окно формы Form1, записаны в файле формы, т.е. любой компонент, попавший при визуальном программировании в ваше приложение из палитры компонентов включается в определенную иерархию владельцев и подчиненных. Иерархия эта замыкается на форме Form1 из класса TForm. Для всех ее составных частей конструкторы и деструкторы вызываются автоматически, незримо для программиста.

Кто создает и уничтожает форму?

Это делает приложение, т. е. объект из класса TApplication. В файле проекта визуального приложения можно увидеть вызов метода:

Application.CreateForm;

Деструктор компонента при визуальном программировании также автоматически вызывает деструкторы всех подчиненных, а потом вычеркивает ненужный компонент из списка компонентов своего владельца.

Если же компоненты используются во время выполнения приложения, как простые объекты вне этой схемы, то нужно писать вызовы конструкторов и деструкторов в явном виде, а также самостоятельно решать кто из них чей.

Элементы управления.

Большинство компонентов, но не все компоненты – являются элементами управления. На этапе проектирования компонент, не являющийся элементом управления, изображается в виде пиктограммы. На этапе выполнения некоторые из этих компонентов видны (например, стандартные диалоговые панели), а другие не видны (например, некоторые компоненты приложений баз данных).

Компоненты класса TMainMenu (главное меню) и TPopupMenu (контекстное меню) вкладки  Standard Палитры компонентов видимы и доступны для редактирования только разработчику приложения. Для него эти компоненты являются инструментом, используемым при создании меню. Во время работы приложения пользователь ничего не может сделать с компонентом меню, он его даже не видит. Он видит только результат работы программиста с этим компонентом, а именно – меню, в котором можно что-то выбирать.

Напротив, компонент класса TButton (кнопка) для пользователя является графическим элементом, видимым на экране. Пользователь может произвести некоторое действие, выполнив щелчок на этой кнопке. Поэтому компонент-кнопка является элементом управления, а компонент-меню – нет.

Все компоненты, представленные в Палитре компонентов на страницах Standard, Additional, Win32, Win 3.1, Data Controls (за исключением компонентов TMainMenu и TPopupMenu), являются элементами управления.

Класс TControl со своими наследниками образует всю палитру видимых компонентов в Delphi. Они называются (большая часть из них) элементами управления, поскольку на их основе реализованы управляющие компоненты: кнопки, списки, переключатели и т.д.

Изобразим схематически связь между компонентами.