Рис. В27. Шаблон
процедуры обработки события, сгенерированный Delphi
В окне редактора кода между словами
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. Исходные данные вводятся
из полей редактирования Editl и 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;