Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Примечание. Тип TComponentName представляет собой обычную строку:




Тип TComponentName представляет собой обычную строку:

type TComponentName = type string;

Свойство

property Tag: Longint;

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

Для компонентов существует своя иерархия, поэтому в классе введен механизм учета и управления компонентами, для которых данный компонент является владельцем. Свойства и методы, которые отвечают за управление, приведены в табл. 2.1.

Таблица 2.1.Свойства и методы для управления списком компонентов

Свойство (метод) Описание
property Components [Index: Integer]: TComponent ; Содержит индексированный список указателей всех компонентов, для которых данный компонент является владельцем (owner)
property ComponentCount : Integer; Число подчиненных компонентов
property Owner: TComponent; Указывается, какой компонент является владельцем данного
property Componentlndex: Integer; Индекс данного компонента в списке владельца
procedure InsertComponent (AComponent : TComponent) ; Вставляет компонент AComponent в список
procedure RemoveComponent (AComponent : TComponent}; Удаляет компонент AComponent из списка
procedure FindComponent (AName: string): TComponent; Осуществляет поиск компонента по имени AName
procedure DestroyComponents; Предназначен для уничтожения всех компонентов, подчиненных данному

Очень важное свойство

type TComponentState = set of (csLoading, csReading, csWriting, csDestroying, csDesigning, csAncestor, csllpdating, csFixups, csFreeNotification, cslnline, csDesignlnstance); property ComponentState: TComponentState;

дает представление о текущем состоянии компонента. В табл. 2.2 описаны возможные состояния компонента. Состояние может измениться в результате получения компонентом некоторого сообщения, действий разработчика, выполнения акции и т. д. Это свойство активно используется средой разработки.

Таблица 2.2.Возможные состояния компонента

Состояние Описание
csLoading Устанавливается при загрузке компонента из потока
csReading Устанавливается при чтении значений свойств из потока
csWriting Устанавливается при записи значений свойств в поток
csDestroying Устанавливается при уничтожении компонента
csDesigning Состояние разработки. Устанавливается при работе с формой во время разработки
csAncestor Устанавливается при переносе компонента на форму. Для перехода в это состояние должно быть уже установлено состояние csDesigning
csUpdating Устанавливается при изменении значений свойств и отображения результата на форме-владельце. Для перехода в это состояние должно быть уже установлено состояние csAncestor
CsFixups Устанавливается, если компонент связан с компонентом другой формы, которая еще не загружена в среду разработки
csFreeNotification Если это состояние устанавливается, другие компоненты, связанные с данным, уведомляются о его уничтожении
cslnline Определяет компонент верхнего уровня в иерархии. Используется для обозначения корневого объекта в разворачивающихся свойствах
csDesignlnstance Определяет корневой компонент на этапе разработки

Для обеспечения работы механизма действий (см. гл. 8) предназначен

метод

function ExecuteAction(Action: TBasicAction): Boolean; dynamic;

Он вызывается автоматически при необходимости выполнить акцию, предназначенную для данного компонента.

На уровне класса TComponent обеспечена поддержка СОМ-интерфейсов IUnknown и IDispatch.

Через свойство

property ComObject: IUnknown;

вы можете обеспечить применение методов этих интерфейсов.

Таким образом, класс TComponent имеет все для использования в качестве предка, для создания собственных невизуальных компонентов.

 

Базовые классы элементов управления

Вслед за классом TComponent в иерархии базовых классов (см. рис. 2.1) располагается группа из трех классов, которые обеспечивают создание различных визуальных компонентов. Визуальные компоненты — это разнообразные стандартные для Windows и специальные (созданные разработчиками Inprise) элементы управления.

Понятно, что визуальные компоненты должны уметь отобразить себя на экране монитора и реагировать на целый ряд новых событий (реакция на мышь и клавиатуру, движение курсора и т. д.). Для этого в них встроен специальный механизм, обеспечивающий взаимодействие компонентов с графической подсистемой ОС (GUI).

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

Класс TWinControl обеспечивает использование в Delphi оконных элементов управления. Главное отличие оконного элемента управления от любых других — наличие дескриптора окна hwnd. Дескриптор окна — это специальный идентификатор, который операционная система присваивает всем объектам, которые должны обладать свойствами окна. Если элемент управления имеет дескриптор окна, то он должен уметь выполнять следующие операции:

  • получать и передавать фокус управления во время выполнения приложения;
  • воспринимать управляющие воздействия от мыши и клавиатуры;
  • уметь размещать на себе другие элементы управления.

Оконными элементами управления являются не только формы, но и практически все стандартные элементы управления Windows: и списки, и редакторы имеют дескриптор окна.

Итак, все визуальные компоненты происходят от класса TWinControl. Однако нестандартные элементы управления имеют еще одного общего предка. Это класс TCustomContrl. Он существенно облегчает использование элементов управления, т. к. позволяет управлять отрисовкой компонента путем использования специального класса TCanvas — так называемой канвы (см. гл. 11) вместо обращения к системным функциям GUI.

Для обеспечения создания обычных (не оконных) элементов управления непосредственно от класса TControl порожден класс TGraphicControl. Его потомки не могут получать фокус, но используют для визуализации канву.

 


Поделиться:

Дата добавления: 2014-12-03; просмотров: 79; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты