Пример программирования события в C++ Builder
В данной статье описывается пример программирования события клика на кнопке с выводом соответствующего сообщения.
Условие задачи
Создать простейшую программу, подсчитывающую количество кликов на кнопке типа TButton. Текущий результат выводить в компоненте TLabel.
Выполнение
1. Создать приложение в C++ Builder как VCL Forms Application.
Сохранить проект.
2. Размещение компонента TButton на форме.
Компонент TButton размещен на вкладке Standard (рис. 1).
Рис. 1. Компонент TButton с панели инструментов Tool Palette
Из вкладки Standard палитры компонентов Tool Palette разместить компонент TButton на форме приложения (рис. 2).
Автоматически будет создана объект-переменная с именем Button1 (свойство Name).
Рис. 2. Компонент TButton на форме приложения
3. Размещение компонента TLabel на форме.
В палитре Tool Palette находим компонент TLabel (метка), который представляет собой текст для вывода на форме (рис. 3).
Рис. 3. Компонент TLabel на палитре инструментов Tool Palette
Размещаем компонент TLabel на форме. Создается новый объект-переменная с именем Label1.
Редактируем размеры формы а также компоненты TLabel и TButton таким образом (приблизительно) як показано на рисунке 4.
Рис. 4. Редактирование внешнего вида приложения
4. Настройка свойств компонент TForm, TLabel і TButton.
Изменяем название формы. Для этого:
– выделяем форму Form1 (с помощью «мышки»);
– в Object Inspector в свойстве Caption устанавливаем значение «Подсчет числа кликов».
Изменяем текст в Label1. Для этого:
– выделяем компонент Label1;
– в Object Inspector в свойстве Caption вводим текст «Число кликов = «.
Изменяем текст в Button1. Для этого:
– выделяем компонент Button1;
– в Object Inspector в свойстве Caption вводим текст «».
Форма приложения после настройки будет иметь вид как показано на рис. 5.
Рис. 5. Вид формы после настройки
6. Программирование события клика на кнопке.
Windows предоставляет огромное множество событий, которые могут обрабатываться программно. Одним из наиболее широко используемых событий есть событие клика на кнопке. Это событие называется OnClick. Названия всех событий начинаются с префикса «On».
В нашем случае программируем событие OnCick компонента Button1.
Для этого сначала нужно выделить компонент Button1 и перейти на вкладку «Events» в Object Inspector. В списке доступных событий найти событие «OnClick» (рис. 6).
Рис. 6. Событие OnClick компонента Button1
После этого нужно вызвать программный код процедуры обработки этого события.
Для этого существует два метода:
– двойной клик «мышкой» в области строки OnClick в Object Inspector;
– двойной клик «мышкой» в области компонента (кнопки) Button1 на форме (только для TButton).
В результате выбора одного из двух методов открывается окно редактора кода, листинг которого следующий.
void __fastcall TForm1::Button1Click(TObject *Sender) { }
Между фигурными скобками нужно вписать наш код обработки события. Впишем наш код в п.9 этой статьи. Сначала опишем внутреннюю переменную.
7. Добавление переменной счетчика.
Согласно условию задачи, нужно вести учет числа кликов «мышью» на кнопке Button1. Для этого в программном коде вводим переменную k в описании класса TForm1.
Класс TForm1 автоматически был создан системой Borland C++ Builder. Этому классу соответствует главная форма приложения Form1.
Описание класса в модуле «Unit1.h». Unit1 – название модуля файла которое было задано при сохранении проекта. Переход к модулю (файлу) «Unit1.h» отображен на рис. 9.
Рис. 7. Модуль Unit1.h
Листинг программного кода модуля следующий.
//-----------------------------------------------------------
#ifndef Unit1H #define Unit1H //----------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> //----------------------------------------------------------- class TForm1 : public TForm { __published: // IDE-managed Components TButton *Button1; TLabel *Label1; void __fastcall Button1Click(TObject *Sender); private: // User declarations public: // User declarations __fastcall TForm1(TComponent* Owner); }; //------------------------------------------------------ extern PACKAGE TForm1 *Form1; //------------------------------------------------------ #endif
Между словами «private:» и «public:» вписываем переменную k целого типа. Фрагмент кода имеет вид:
... private: // User declarations int k; public: // User declarations ...
В вышеприведенном листинге переменная k описывается в классе формы как приватная переменная (раздел private).
8. Программирование события активизации формы OnActivate.
Для начального обнуления значения переменной k программируем событие активизации формы OnActivate. Это событие генерируется системой сразу после запуска приложения. Оно используется для начальной инициализации значений внутренних переменных формы.
Выделяем форму, выбираем вкладку «Events». На рис. 8 изображено размещение события на вкладке «Events» в Object Inspector.
Рис. 8. Событие OnActivate формы Form1
Вызываем листинг процедуры обработки события OnActivate с помощью двойного клика «мышкой» в строке с названием события. Код листинга имеет следующий вид.
void __fastcall TForm1::FormActivate(TObject *Sender) { // обнуление счетчика k = 0; // вывод сообщения Label1->Caption = "Число кликов = " + IntToStr(k); }
9. Программирование кода обработки события на кнопке Button1.
Вызываем программный код события OnClick компонента Button1 (см. п.6). Формируем листинг кода следующим образом.
void __fastcall TForm1::Button1Click(TObject *Sender) { k++; Label1->Caption = "Число кликов = " + IntToStr(k); }
В приведенном листинге значение переменной k увеличивается на 1 каждый раз как пользователь нажмет на кнопке Button1.
Функция IntToStr(k) переводит числовое значение k в строковое значение для представления его на форме.
После этого можно запускать проект на выполнение.