- •Программирование для Windows
- •Литература
- •Вам необходимо знать и уметь
- •Первая программа
- •Соглашения операционной системы Windows
- •Вызовы функций Windows
- •Идентификаторы, написанные прописными буквами
- •Новые типы данных
- •Описатели
- •Венгерская нотация
- •Точка входа программы
- •Оконная процедура
- •Регистрация класса окна
- •Создание окна
- •Отображение окна
- •Цикл обработки сообщений
- •Оконная процедура
- •Обработка сообщений
- •Воспроизведение звукового файла
- •Сообщение wm_paint
- •Сообщение wm_destroy
- •Сложности программирования для Windows
- •Синхронные и асинхронные сообщения
- •Думайте о пользователе
- •Лекция3. Приступаем с изучению компонент
- •Урок 4. Класс tObjectи его потомки
- •Урок 5. Работа с кнопками
- •Урок 6. Компонент ActionList
- •Урок 7. Работаем с меню (класс tMainMenu)
- •Урок 8. Работаем с контекстным меню (класс tPopupMenu)
- •Урок 9. Компонент Edit
- •Урок 10. Работаем с двумя формами
- •Урок 11. Текст (компоненты tLabel и tStaticText)
- •Урок 12. Компонент ListBox
- •Урок 13. Компонент ComboBox
- •Урок 14. Используем api-функции
- •Урок 15. Разные MessageBox'ы
- •Урок 16. Компонент CheckBox
- •Урок 17. Компонент RadioButton
- •Урок 18. Класс tStrings
- •Урок 19. Класс tStringList
- •Урок 20. Работаем с сетью. Клиент (класс tClientSocket)
- •Урок 21. Работаем с сетью. Сервер (класс tServerSocket)
- •Урок 22. Компонент ImageList
- •Урок 23. Пересчитываем компоненты на форме
- •Урок 24. Форма - добавление методов
- •Урок 25. Форма - добавление полей
- •Урок 27. Значок на панели задач (компонент tTrayIcon)
- •Урок 28. Работаем со сплиттером
- •Урок 29. Компонент Panel
- •Урок 30. Совместное использование сплиттера и Panel'ей
- •Урок 31. Компонент HotKey
- •Урок 32. Компонент StatusBar
- •Урок 33. Установка главной формы приложения
- •Урок 34. Рисование на форме
Лекция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(базовый класс для всех видимых на этапе выполнения программ компонент) и другие.