Событие и процедура обработки события
В окне редактора кода между словами begin и end можно печатать инструкции, реализующие функцию обработки события.
В листинге В1 приведен текст функции обработки события onclick для командной кнопки Вычислить. Обратите внимание на то, как представлена программа. Ее общий вид соответствует тому, как она выглядит в окне редактора кода: ключевые слова выделены полужирным, комментарии – курсивом (выделение выполняет редактор кода). Кроме того, инструкции программы набраны с отступами в соответствии с принятыми в среде программистов правилами хорошего стиля.
Листинг В1. Процедура обработки события OnClick на кнопке Button1 (Вычислить).
// нажатие кнопки Вычислить procedure TForm1.ButtonlClick(Sender: TObject); var dist: integer; // дистанция, метров t: real; // время как дробное число min: integer; // время, минуты sek: integer; // время, секунды v: real; // скорость begin // получить исходные данные из полей ввода dist: = StrToint(Edit1.Text); t: = StrToFloat(Edit2.Text); // предварительные преобразования min: = Trunc(t); // кол-во минут – это целая часть числа t sek: = Trunc(t*100) mod 100; // кол-во секунд – это дробная часть // числа t // вычисление v: = (dist/1000) / ((min*60 + sek)/3600); // вывод результата label4.Caption: = 'Дистанция: '+ Edit1.Text + ' м' + #13 + 'Время: ' + IntToStr(min) + ' мин ' + IntToStr(sek) + ' сек ' + #13 + 'Скорость: ' + FloatToStrF(v,ffFixed,4,2) + ' км/час'; end;
Функция Button1click выполняет расчет скорости и выводит результат расчета в поле Label4. Исходные данные вводятся из полей редактирования Edit1 и Edit2 путем обращения к свойству Text. Свойство Text содержит строку символов, которую во время работы программы введет пользователь. Для правильной работы программы строка должна содержать только цифры. Для преобразования строки в числа в программе используются функции StrToInt и strToFloat. Функция strToInt проверяет символы строки, переданной ей в качестве параметра (Edit1.Text – это содержимое поля Editl), на допустимость и, если все символы верные, возвращает соответствующее число. Это число записывается в переменную dist. Аналогичным образом работает функция strToFioat, которая возвращает дробное число, соответствующее содержимому поля Edit2. Это число записывается в переменную t.
После того как исходные данные будут помещены в переменные dist и t, выполняются подготовительные действия и расчет. Первоначально с использованием функции Trunc, которая "отбрасывает" дробную часть числа, выделяется целая часть переменной t – это количество минут. Значением выражения Trunc(t*100) mod 100 является количество секунд. Вычисляется это выражение так. Сначала число t умножается на 100. Полученное значение передается функции Trunc, которая возвращает целую часть результата умножения t на 100. Полученное таким образом число делится по модулю на 100. Результат деления по модулю – это остаток от деления.
После того как все данные готовы, выполняется расчет. Так как скорость должна быть выражена в км/час, то значения дистанции и времени, выраженные в метрах и минутах, преобразуются в километры и часы.
Вычисленное значение скорости выводится в поле Label4 путем присваивания значения свойству Caption. Для преобразования чисел в строки используются функции IntToStr и FloatToStr.
В результате нажатия кнопки Завершить программа должна завершить работу. Чтобы это произошло, надо закрыть, убрать с экрана, главное окно программы. Делается это при помощи метода close. Процедура обработки события Onclick для кнопки Завершить приведена в листинге В2.
Листинг В2. Процедура обработки события Onclick на кнопке Button2 (Завершить).
// нажатие кнопки Завершить procedure TForm1.Button2Click(Sender: TObject); begin Form1.Close; // закрыть главное окно программы end;