На этом шаге мы рассмотрим свойства и методы класса TComponent.
Свойства класса TComponent
Методы класса TComponent
Предком для всех компонентов библиотеки является класс TComponent. Он инкапсулирует наиболее общие свойства и методы компонентов, включая:
Объекты типа TComponent не создаются. Этот класс используется как базовый при объявлении класса невизуального компонента, который может присутствовать в палитре компонентов и применяться в процессе проектирования.
Этот класс имеет небольшое количество свойств, которые представлены в таблице 1.
Свойство | Описание |
---|---|
property ComObject: IUnknown; | Защищенное свойство, возвращающее ссылку на интерфейс в компонентах, поддерживающих стандарт COM. |
property ComponentCount: Integer; | Число компонентов, которыми владеет данный компонент. Равно числу элементов в массиве Components. Может использоваться вместе с ComponentIndex. |
property ComponentIndex: Integer; | Индекс компонента в массиве Components. Нумерация элементов в массиве начинается с 0. |
property Components [Index: Integer]: TComponent; | Массив компонентов, которыми владеет данный компонент. |
property ComponentState: TComponentState; type TCоmponentState = set of (csLoading, csReading, csWriting, csDestroying, csDesigning); |
Состояние компонента в процессе визуального проектирования (только для чтения). Эти состояния используются средой во время визуального проектирования, при загрузке/выгрузке компонентов из файлов ресурсов. Во время исполнения приложения множество состояний пусто. Во время выполнения не используется. |
property ComponentStyle: TComponentStyle; type TComponentStyle = set of (csInheritable, csCheckPropAvailcsSubComponent, csTransient); |
Определяет множество флагов стиля компонента. В частности, стиль csInheritable указывает, что компонент может принадлежать форме. |
property DesignInfo: Longint; | Используется в среде Delphi при проектировании форм. В нем хранятся координаты верхнего левого угла компонента во время разработки. В приложениях не используется. |
property property Name: TComponentName; type TComponentName = string[63]; |
Имя компонента. Имя компонента не может быть пустой строкой; в модуле не может быть и двух компонентов с одинаковыми именами. Это не просто то имя, которое использует программист при обращении к свойствам методам компонента, а компилятор - при компиляции этих обращений. Компонент знает свое имя на этапе выполнения программы, но что еще более важно - на этапе визуального проектирования приложения (будем называть это еще этапом разработки). |
property Owner: TComponent; | Определяет владельца данного компонента. Форма является владельцем всех расположенных на ней компонентов. В свою очередь объект Application является владельцем всех форм. Когда освобождается память, занимаемая владельцем, автоматически освобождается память всех компонентов, которыми он владел. Свойство только для чтения. |
property Tag: Longint; | Позволяет "привязать" к каждому компоненту целое число. Значение этого свойства системой не используется, поэтому разработчик может использовать его по своему усмотрению. |
property VCLComObject: Pointer; | Используется только в среде Delphi-компонентов, поддерживающих стандарт COM. |
В классе TComponent определено большое количество методов. В таблице 2 приводятся только те из них, которые часто используются при работе с компонентами. Остальные используются для внутренних потребностей Delphi.
Метод | Описание |
---|---|
constructor Create(AOwner: TComponent); virtual; | Вызов конструктора компонента. |
destructor Destroy; override; | Вызов деструктора компонента. Вместо этого метода лучше использовать методы Free или Release. |
function FindComponent(const AName: string): TComponent; | Ищет в списке Components компонент с заданным именем. |
procedure FreeNotification (AComponent: TComponent); | Гарантирует, что указанный в вызове компонент будет разрушен. Используется только по отношению к компонентам, расположенным на других формах. Для компонентов на текущей форме вызывается автоматически. |
procedure InsertComponent (AComponent: TComponent); | Добавление указанного компонента в конец списка компонента-владельца. При визуальном проектировании вызывается автоматически. Специально может потребоваться только при добавлении компонента в список другого владельца. |
procedure RemoveComponent (AComponent: TComponent); | Удаление указанного компонента из списка компонента-владельца. При визуальном проектировании вызывается автоматически. Специально может потребоваться только при удалении компонента из списка другого владельца. |
procedure DestroyComponents; | Удаляет все компоненты из списка. |
На следующем шаге мы рассмотрим состав класса TControl.