C++. Пример программирования события в C++ Builder




Пример программирования события в C++ Builder

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

Условие задачи

Создать простейшую программу, подсчитывающую количество кликов на кнопке типа TButton. Текущий результат выводить в компоненте TLabel.

Выполнение

1. Создать приложение в C++ Builder как VCL Forms Application.
Сохранить проект.

2. Размещение компонента TButton на форме.
Компонент TButton размещен на вкладке Standard (рис. 1).

05_01_00_006_01_

Рис. 1. Компонент TButton с панели инструментов Tool Palette

 Из вкладки Standard палитры компонентов Tool Palette разместить компонент TButton на форме приложения (рис. 2).
Автоматически будет создана объект-переменная с именем Button1 (свойство Name).

05_01_00_006_02_

Рис. 2. Компонент TButton на форме приложения

3. Размещение компонента TLabel на форме.

 В палитре Tool Palette находим компонент TLabel (метка), который представляет собой текст для вывода на форме (рис. 3).

05_01_00_006_03_

Рис. 3. Компонент TLabel на палитре инструментов Tool Palette

 Размещаем компонент TLabel на форме. Создается новый объект-переменная с именем Label1.
Редактируем размеры формы а также компоненты TLabel и TButton таким образом (приблизительно) як показано на рисунке 4.

05_01_00_006_04_

Рис. 4. Редактирование внешнего вида приложения

4. Настройка свойств компонент TForm, TLabel і TButton.

Изменяем название формы. Для этого:
– выделяем форму Form1 (с помощью «мышки»);
– в Object Inspector в свойстве Caption устанавливаем значение «Подсчет числа кликов».

Изменяем текст в Label1. Для этого:
– выделяем компонент Label1;
– в Object Inspector в свойстве Caption вводим текст «Число кликов = «.

Изменяем текст в Button1. Для этого:
– выделяем компонент Button1;
– в Object Inspector в свойстве Caption вводим текст «».

 Форма приложения после настройки будет иметь вид как показано на рис. 5.

05_01_00_006_05r

Рис. 5. Вид формы после настройки

6. Программирование события клика на кнопке.

  Windows предоставляет огромное множество событий, которые могут обрабатываться программно. Одним из наиболее широко используемых событий есть событие клика на кнопке. Это событие называется OnClick. Названия всех событий начинаются с префикса «On».
В нашем случае программируем событие OnCick компонента Button1.
Для этого сначала нужно выделить компонент Button1 и перейти на вкладку «Events» в Object Inspector. В списке доступных событий найти событие «OnClick» (рис. 6).

05_01_00_006_06r

Рис. 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.

05_01_00_006_07_

Рис. 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.

05_01_00_006_08_

Рис. 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 в строковое значение для представления его на форме.

  После этого можно запускать проект на выполнение.