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

Компоненты (tComponent)

н е визуальные(например TApplication) визуальные(TControl)

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

управления

Оконные не оконные

(TWinControl) (TGraphicControl)

(например TButton,TForm) (напримерTLabel)

Объекты класса TWinControl называют оконными элементами управления. Методов и свойств у них много, все они наследуются визуальными компонентами для которых TControl и TWinControl являются абстрактными предками.

Например, пусть элемент управления пока не может быть показан на экране, однако TControl уже имеет для него свойства для его расположения:

property BoundsRect:TRect . . . .

property ClientRect:TRect . . . .

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

Родительские и дочерние компоненты.

В библиотечном модуле Controls описан класс TControl и его потомок TWinControl. Как уже отмечалось, некоторые из наследников TControl обладают дескрипторами окон и способны получать и обрабатывать Windows – сообщения, другие окон не имеют, но обязательно включаются в состав оконных компонентов, которые управляют ими, согласуясь с требованиями (сообщениями) Windows. Оконные элементы управления обладают специальной оконной функцией, в которую Windows посылает управляющие сообщения (например, извещения о манипуляции пользователя с мышью или о нажатии им клавиш клавиатуры). Такие элементы управления называются родительскими, а связанные с ними неоконные компоненты – дочерними.

Обязательным требованием Windows является визуальная синхронизация дочерних компонентов: они не могут выходить из границ своего родителя и появляются и исчезают вместе с ним. Иными словами, родитель с дочерними компонентами рассматривается Windows  как единое целое. Класс TControl определяет свойство Parent, которое содержит ссылку на родительский компонент:

Property Parent: TWinControl;

Внимание! Это свойство не следует путать с собственником Owner:

Owner создал компонент (не обязательно видимый), а Parent управляет видимым компонентом.

Поскольку конструктор TComponent.Create не изменяет Parent (в родительском классе TComponent такого свойства нет), то при создании видимых компонентов на этапе прогона программы это свойство необходимо изменять программно. Например, следующий обработчик события OnCreate формы Form1 вставит надпись «Дочерний элемент» в левый верхний угол формы:

procedure TForm1.FormCreate(Sender: TObject);

var

Label1:TLabel;

begin

Label1:= TLabel.Create(Self);

Label1.Parent:=Self;

Label1.Caption:='Дочерний элемент';

end;

Если убрать оператор

Label1.Parent:=Self;

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