Событие и функция обработки события
Вид созданной формы подсказывает, как работает приложение. Очевидно, что пользователь должен ввести в поля редактирования исходные данные и щелкнуть мышью на кнопке Вычислить. Щелчок на изображении командной кнопки — это пример того, что в Windows называется событием. Событие (Event) — это то, что происходит во время работы программы. В C++ Builder каждому событию присвоено имя. Например, щелчок кнопкой мыши — это событие Onclick, двойной щелчок мышью — событие OnDb1Click.
В табл. 20.9 приведены некоторые события Windows.
Таблица 2.9. События
Событие | Происходит |
OnClick | При щелчке кнопкой мыши |
OnDb1Click | При двойном щелчке кнопкой мыши |
OnMouseDown | При нажатии кнопки мыши |
OnMouseUp | При отпускании кнопки мыши |
OnMouseMove | При перемещении мыши |
OnKeyPress | При нажатии клавиши клавиатуры |
OnKeyDown | При нажатии клавиши клавиатуры. События OnKeyDown и OnKeyPress — это чередующиеся, повторяющиеся события, которые происходят до тех пор, пока не будет отпущена удерживаемая клавиша (в этот момент происходит событие OnKeyUp) |
OnKeyUp | При отпускании нажатой клавиши клавиатуры |
OnCreate | При создании объекта (формы, элемента управления). Процедура обработки этого события обычно используется для инициализации переменных, выполнения подготовительных действий |
On Paint | При появлении окна на экране в начале работы программы; во время работы программы после появления окна (или его части), которое было закрыто другим окном или свернуто |
OnEnter | При получении элементом управления фокуса |
OnExit | При потере элементом управления фокуса |
Реакцией на событие должно быть какое-либо действие. В C++ Builder реакция на событие реализуется как функция обработки события. Таким образом, для того чтобы программа выполняла некоторую работу в ответ на действия пользователя, программист должен написать функцию обработки соответствующего события. Следует обратить внимание на то, что значительную часть обработки событий берет на себя компонент. Поэтому программист должен разрабатывать функцию обработки события только в том случае, если реакция на событие отличается от стандартной или не определена. Например, если по условию задачи ограничений на символы, вводимые в поле Edit, нет, то процедуру обработки события onKeypress писать не надо, т. к. во время работы программы будет использована стандартная (скрытая от программиста) процедура обработки этого события.
Методику создания функций обработки событий рассмотрим на примере функции обработки события onclick для командной кнопки Вычислить.
Чтобы приступить к созданию функции обработки события, сначала надо выбрать компонент, для которого создается функция обработки события. Выбрать компонент можно в окне Object Inspector или щелчком на изображении компонента в форме. После этого в окне Object Inspector нужно выбрать вкладку Events (События).
В левой колонке вкладки Events (рис. 20.22) перечислены события, которые может воспринимать выбранный компонент (имя и тип компонента указаны в верхней части окна). Если для события определена функция обработки, то в правой колонке рядом с именем события будет выведено имя этой функции.
Для того чтобы создать функцию обработки события, нужно сделать двойной щелчок мышью в окне Object Inspector, в поле функции обработки соответствующего события (рис. 2.19). В результате этого откроется окно редактора кода, в которое будет добавлен шаблон функции обработки события, а в окне Object Inspector рядом с именем события появится сгенерированное C++ Builder имя функции обработки события (рис. 20.23).
Рис. 2.18. На вкладке Events перечислены события, которые может воспринимать компонент (в данном случае — командная кнопка)
Рис. 2.19. Шаблон функции обработки события, сгенерированный C++ Builder
C++ Builder присваивает функции обработки события имя, которое состоит из двух частей. Первая часть имени идентифицирует форму, содержащую объект (компонент), для которого создана процедура обработки события. Вторая часть имени идентифицирует сам объект и событие. В нашем примере имя формы — Form1, имя командной кнопки — Button1, а имя события — Click.
В окне редактора кода между фигурными скобками можно набирать инструкции, реализующие функцию обработки события.
В листинге 2.1 приведен текст функции обработки события OnClick для командной кнопки Вычислить. Обратите внимание на то, как представлена программа. Ее общий вид соответствует тому, как она выглядит в окне редактора кода: ключевые слова выделены полужирным шрифтом, комментарии — курсивом (выделение выполняет редактор кода). Кроме того, инструкции программы набраны с отступами в соответствии с принятыми в среде программистов правилами хорошего стиля.
Листинг 20.1. Простейшая обработка события OnClick на кнопке Вычислить
void__fastcall TForml::ButtonlClick(TObject *Sender)
{
float u; // напряжение
float r; // сопротивление
float i; // ток
// получить данные из полей ввода
u = StrToFloat(Editl->Text);
r = StrToFloat(Edit2->Text);
// вычислить ток
i = u/r;
// вывести результат в поле метки
Label4->Caption = "Ток : " +
FloatToStrF(i,ffGeneral,7,2) + "А";
}
Функция Button1Click выполняет расчет силы тока и выводит результат расчета в поле Label4. Исходные данные вводятся из полей редактирования Edit1 и Edit2 путем обращения к свойству Text. Свойство Text содержит строку символов, которую ввел пользователь. Чтобы программа работала правильно, пользователь должен ввести в каждое поле редактирования целое или дробное число в правильном формате (при вводе дробного числа для разделения целой и дробной частей надо использовать запятую). Так как поле редактирования содержит текст (свойство Text строкового типа), необходимо выполнить преобразование строки в число. Эту задачу решает функция strToFloat, которой в качестве параметра передается содержимое поля редактирования — значение свойства Text (Edit1->Text — это содержимое поля Edit1). Функция strToFloat проверяет символы строки, переданной ей в качестве параметра, на допустимость и, если все символы верные, возвращает значение, соответствующее строке, полученной в качестве параметра.
После того как исходные данные будут помещены в переменные u и r, выполняется расчет.
Вычисленная величина силы тока выводится в поле Label4 путем присваивания значения свойству Caption. Для преобразования числа в строку символов (свойство Caption - строкового типа) используется функция FloatToStrF.
В листинге 20.2 приведена процедура обработки события OnClick на командной кнопке Завершить. Создается она точно так же, как и процедура обработки события OnClick для командной кнопки Вычислить. В результате щелчка на кнопке Завершить программа должна завершить работу. Чтобы это произошло, надо закрыть окно программы. Делает это метод close.
Листинг 20.2. Процедура обработки события Onclick на кнопке Завершить
void __fastcall TForml::Button2Click(TObject*Sender)
{
Forml->Close();
}
- Московский государственный университет
- Компоненты
- Событие и функция обработки события
- Редактор кода
- Система подсказок
- Навигатор классов
- Шаблоны кода
- Справочная система
- Сохранение проекта
- Компиляция
- Предупреждения и подсказки
- Компоновка
- Запуск программы
- Ошибки времени выполнения
- Внесение изменений
- Настройка приложения
- Название программы
- Значок приложения
- Перенос приложения на другой компьютер
- Структура простого проекта
- 2. Задание на выполнение работы
- 1. Электроэнергия.
- 2. Игра «угадай число».
- 3. Гороскоп
- 4. Межгород
- 6. Алфавит
- 7. Палиндром
- 8. Метеослужба
- 9. Статистика
- 10. Кафе.
- Лабораторная работа №22 Графика.
- Карандаш и кисть
- Графические примитивы
- Ломаная линия
- Прямоугольник
- Многоугольник
- Окружность и эллипс
- Лабораторная работа №23 Иллюстрации
- Битовые образы
- Мультипликация
- Метод базовой точки
- Использование битовых образов
- Загрузка битового образа из ресурса программы
- Создание файла ресурсов
- Подключение файла ресурсов
- Int w, h; // размер кадра
- Int с; // номер воспроизводимого кадра
- Лабораторная работа №25
- 1. База данных и субд
- Локальные и удаленные базы данных
- Структура базы данных
- Псевдоним
- Компоненты доступа и манипулирования данными
- Создание базы данных
- Доступ к базе данных Доступ к базе данных обеспечивают компонентыDatabase, Table, Query и DataSource.Значки этих компонентов находятся на вкладкахData Accessи bde(рис. 25.8).
- Отображение данных
- Манипулирование данными
- Выбор информации из базы данных
- Перенос программы управления базой данных на другой компьютер
- 2. Задание на выполнение работы
- Литература