Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции.doc
Скачиваний:
17
Добавлен:
14.02.2015
Размер:
641.54 Кб
Скачать

Лекция3. Приступаем с изучению компонент

Первые несколько уроков нашего курса будут посвящены изучению различных стандартных компонент библиотеки VCL. Расположены эти компоненты в основном на вкладкахStandard,Additional,Win32 иDialogsИнспектора объектов. С перечисленных вкладок мы изучим не все компоненты и, кроме того, несколько компонент будет с других вкладок. Дело это, конечно, немного скучное, поэтому для разнообразия время от времени мы будем писать разные программы - на 1-2 занятия. Кроме того, мы рассмотрим некоторые классы, которые вообще не расположены на Палитре компонентов.

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

Библиотека VCLиспользуется не только вC++Builder, но вDelphi. Очень удобно - изучаете одну библиотеку, и используете ее в двух языках (изменяя код только в соответствии с синтаксисом соответствующего языка). Этим же путем пошла, кстати, и фирмаMicrosoftвVisualStudio.NET- там все три основные языка (VisualC#,VisualBasicиVisualC++) используют одну и туже библиотеку.

Кроме библиотеки VCLфирмаBorlandактивно пропагандирует новую библиотекуCLX. Она очень похожа наVCLи может работать на разных платформах (Linux).

Кроме поставляемых с C++ компонентов существуют и компоненты от третьих фирм. Кроме того, вы можете писать собственные компоненты сами.

Урок 4. Класс tObjectи его потомки

Предком для классов библиотеки VCLслужит классTObject. Этот класс содержит методы, которые вы можете найти во всех его потомках. Существуют три главные группы методов этого класса. Первая группа этих методов ответственна за создание и удаление объекта, вторая - за возвращение информации о самом объекте во время выполнения программы иRTTI-информацию о его опубликованных свойствах, третья - за поддержку обработки сообщений. Кратко рассмотрим самые важные из них.

Метод ClassName- возвращает имя класса. МетодClassParent- возвращет информацию о родительском классе. Вот пример его использования:

...

//Берем информацию о родительском классе

TClassClassRef=Sender->ClassParent();

//Показываем информацию

ShowMessage(ClassRef->ClassName());

...

Если вы поместите этот код в обработчик нажатия кнопки, то появится messageboxсо строкойTButtonControl- именно этот класс и есть непосредственный предок для класса кнопкиTButton.

Метод ClassInfoиспользуется для получения доступа кRTTI-таблице, которая содержит в том числе информацию о всех опубликованных свойствах объекта (опубликованные свойства - это те, которые вы можете видеть в Инспекторе объектов).

Метод Dispatch. Вызывается для автоматической обработки сообщенийWindows. Если обработчик для сообщения есть в нашем классе, то он и вызывается, если нет, тоDispatchбудет искать обработчики сначала в родительском классе, потом в родителе родителя и т. д. Если подходящий обработчик так и не будет найден, то будет использован обработчик по умолчанию.

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

void __fastcall TForm1::Button1Click(TObject *Sender)

{

}

Основные потомки класса TObject- этоTPersistent(имеет возможность сохранения и восстановления данных),TComponent(имеет способность размещаться на Палитре компонентов),TControl(базовый класс для всех видимых на этапе выполнения программ компонент) и другие.