Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВВЕДЕНИЕ В ОБЪЕКТНО Ориентированное программиро...docx
Скачиваний:
19
Добавлен:
29.08.2019
Размер:
1.01 Mб
Скачать

Иерархия библиотечных классов в Borland Delphi.

Все компоненты Delphi являются частью иерархии классов, называемой Visual Component Library (VCL). Часть этой иерархии представлена на рисунке:

TObject

Класс TObject инкапсулирует наиболее общее поведение всех объектов в VCL и включает методы, которые обеспечивают:

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

· методы класса, предназначенные для доступа к информации класса,

· поддерживает обработку сообщений.

Назначение TObject - служить базовым для всех других классов.

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

TComponent

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

TControl

TControl - базовый класс для всех компонентов, которые видимы во время исполнения и которыми пользователь может манипулировать во время выполнения. Такие компоненты называют элементами управления. Все элементы управления имеют свойства, методы и события которые, в основном, служат для обеспечения визуального аспекта, например расположения элемента управления, курсора и подсказки, связанных с элементом управления, методов отрисовки и перемещения элемента управления и обработки событий на действия от мыши.

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

TWinControl

TWinControl - базовый класс для всех оконных элементов управления. Оконные элементы управления это те, которые:

· способны получать фокус во время выполнения программы (т.е. пользователь может их выделять)

· способны получать данные, вводимые пользователем в элемент с клавиатуры,

· способны включать в себя другие элементы управления.

Элементы управления, которые включаю в себя другие элементы управления называют их владельцами (parent). Только оконный элемент управления может быть владельцем одного или более других компонентов.

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

Новые компоненты редко порождаются непосредственно от TWinControl. Большинство новых элементов управления создаются как потомки TCustomControl, который предоставляет возможности вывода графической информации - холст ("canvas"), или как потомки более специализированных элементов управления, таких как TButtonControl, TCustomComboBox, TCustomEdit, или TCustomListBox.

TCustomControl

TCustomControl - базовый класс для. оконных элементов управления, которым необходима возможность создания сложных изображений.

Стандартный оконный элемент управления всегда «знает» как себя отобразить, так как он является частью Windows. Таким образом, кнопка или индикатор с флажком порождены непосредственно от TWinControl. Когда же создается оригинальный оконный элемент управления, который не имеет соответствующего стандартного компонента Windows, он порождается от TCustomControl, а не непосредственно от TWinControl. TCustomControl делает отрисовку оригинального элемента управления простой для программиста. TCustomControl имеет виртуальный метод Paint, который вызывается при необходимости перерисовки элемента управления (сообщение WM_PAINT). При разработке нового компонента программист помещает в этот метод действия по рисованию его элемента управления. Действия же эти он берет через свойство Canvas:TCanvas (канва или холст). Класс TCanvas объединяет в себе «холст» (контекст графического устройства) и «рабочие инструменты» (перо, кисть, шрифт) а также набор функций по рисованию типовых геометрических фигур.

TGraphicControl

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

TGraphicControl - базовый класс для элементов управления, не являющихся оконными. Основная цель большинства графических элементов управления - отображения текста или графики. Компоненты Delphi, порожденные от TGraphicControl это: TBevel, TImage, TPaintBox, TShare, TSpeedButton, TSplitter и TCustomLabel, из которых в свою очередь порождены TDBText и TLabel.

В добавление к тому, что унаследовано от абстрактного компонента TControl, TGraphicControl имеет свойство Canvas, которое обеспечивает возможности рисования элемента управления и виртуальный метод Paint, который вызывает при необходимости его перерисовки (сообщении WM_PAINT, получаемом от владельца элемента управления).

Графический элемент управления не может получать фокус ввода, а также не может содержать в себе других элементов управления. Хотя он не может получить фокус ввода, он может реагировать на сообщения мыши.

Так как графический элемент управления не имеет дескриптора окна Windows (windows handle), его потребность в системных ресурсах меньше и именно поэтому его перерисовка происходит быстрее, чем у оконного элемента управления, который имеет дескриптор окна.

Пример компонента, порожденного от TGraphicControl - TLabel.