- •Delphi 7 Лабораторная работа №1 Компоненты Label, EditBox, Button.
- •Окно Описания Структуры TreeView
- •Окно Инспектора Объектов
- •Окно Формы с именем “Form1”
- •Окно Редактора Кода с именем “Unit1.Pas”
- •2. Создание проекта
- •2.1. Сохранение проекта
- •2.2. Создание экранной формы
- •2.3. Компоненты формы
- •2.4. Событие и обработчик события
- •2.5. Запуск приложения из среды Delphi
2.4. Событие и обработчик события
Теперь после создания интерфейса нужно написать программу, которая выполнит запланированные действия :
Введет исходные данные
Сделает преобразования
Выведет результат
Следует иметь в виду, что после того, как программа для Windowsзагрузилась в память и выполнила некий код инициализации, она ничего не делает. Ничего не произойдет, пока не случится некотороеCобытие(event). Поэтому вместо перечня инструкций (операторов), принятого при линейном программировании, программа наDelphiсодержит набор алгоритмов, определяющих ее действия для различных событий.
Внешний вид создаваемой формы должен подсказывать, как работает приложение. Очевидно, что пользователю нужно ввести температуру в градусах Цельсия в поле редактирования и щелкнуть на кнопке «Перевести». Щелчок левой клавишей мыши на изображении кнопки «Перевести» - это пример события в Windows.Событиемназывается то, что происходит во время выполнения приложения. ВDelphiу стандартных событий есть стандартные имена. Щелкните на вкладке События и с помощью полосы прокрутки просмотрите все стандартные события формы. Например, событие, соответствующее одному щелчку клавишей мыши, имеет имяOnClick, а двойному щелчку мыши -OnDblClick.
Реакциейна событие должно быть какое-либо действие. Так, реакцией на событиеOnClick, произошедшее на кнопке «Перевести», должны быть вычисления в соответствии с формулами перевода градусов из одной шкалы в другую. Реакция на событие вDelphiреализуется как процедура обработки этого события. Такая процедура называетсяобработчикомсобытия. Таким образом, задачей разработчика вDelphiявляется определение множества событий для поставленной задачи и создание соответствующих процедур-обработчиков событий.
Для написания кода обработчика нужно выделить объект (кнопка «Перевести»). Далее на
Вкладке Cобытия(event) окна Инспектора Объектов (ObjectInspector) выбрать событиеOnClick и дважды щелкнуть на правом столбце указанного события. В результате открывается окноРедактора Кодас именем (в нашем случаеGrades_) и макетом процедуры-обработчика события.

Delphiавтоматически образует имя процедуры обработки события как комбинацию двух частей, разделенных точкой. Первая часть идентифицирует форму, содержащую объект, для которого создается обработчик, вторая идентифицирует сам объект и событие. Для нашего примера имя формыGradeC, имя командной кнопки «Перевести»)Button1 (установлено по умолчанию в свойствеNameобъекта), имя событияClick(без буквOn). Автоматически на странице События (Events) появится сформированное имя процедуры в строке событияOnClick.
Теперь в окне Редактора Кода после заголовка процедуры
procedure TGradeC.Button1Click(Sender: TObject);
нужно объявить используемые переменные:
var
Celsius : real ; // градусы по Цельсию
Fahrenheit:real; // градусы по Фаренгейту
Reaumur : real ; // градусы по Реомюру
Здесь в разделе varописаны три переменныеCelsius,FahrenheitиReaumur, которые обозначают градусы по шкалам Цельсия, Фаренгейта и Реомюра соответственно.
Между операторными скобками beginendв разделе операторов следует написать операторы языкаPascal, реализующие процедуру обработки события.
Для перевода градусов из одной шкалы в другую следует использовать соотношения:
10R=5/40C, ноль градусов совпадает у обеих шкал,
10F=5/90C, ноль градусов соответствует 320F,
100 0 C=212 0 F.
Код процедуры для события Clickкнопки «Перевести»:

Исходные данные программа получает из поля редактирования обращением к свойству Text. Это свойство содержит строку символов, поэтому получить действительное число можно с помощью функцийStrToFloatилиVal.
Celsius:=StrToFloat(Edit1.Text);
Значение температуры проверяется на значение абсолютного нуля:
if Celsius <= -273.15
then
При введении значения температуры ниже –273.15 0 Cв программе необходимо предусмотреть соответствующее сообщение. Для этого используется процедура, параметром которой является выражение строкового типа:
ShowMessage('Температура'+Edit1.Text+
' градусов Цельсия не существует);
В коде некоторые свойства меток Captionзаданы как пустые строки.
Label2.Caption:=' ';
Label3.Caption:=' ';
Label4.Caption:=' ';
Сделано это для того, чтобы очистить поля этих меток после предыдущего запуска расчета перевода градусов.
Если введенное значение температуры выше абсолютного нуля, то вывод информации осуществляется путем присвоения свойству Captionсоответствующих меток вычисленных значений в виде текстов сообщений (для этого используется обратная функцияFloatToStr). Одна метка дублирует заданное значение по шкале Цельсия.
Label2.Caption:=Edit1.Text+' градуса(ов)'+
' по шкале Цельсия равны;
Две другие метки применяются для вывода результатов вычислений. Предварительно по формулам вычисляются значения температур для шкал Фаренгейта и Реомюра. Каждый результат в коде представлен в виде двух строк. Для перехода на другую строку служит код #13:
Fahrenheit:=1.8 *Celsius+32;
Label3.Caption:=' '+FloatToStr(Fahrenheit)+
' градусам'+#13+по шкале Фаренгейта';
Reaumur:=4/5*Celsius;
Label4.Caption:=' '+FloatToStr(Reaumur)+
' градусам'+#13+'по шкале Реомюра';
В коде программы используется комментарий – две наклонные черты, - действие которого распространяется до конца строки.
В конце программы поле Edit.Textочищается:
Edit1.Text := ' ';
Ряд свойств устанавливается не только на этапе проектирования, но и во время выполнения программы.
Можно изменять цвет фона и цвет символов при выполнении программы. Для этого можно внести следующие изменения в программу: в ветви elseсразу послеbeginнапишем два оператора присваивания:
Label2.Color := clBlack; // цвет фона
Label2.Font.Color:=clRed; // цвет символа
Для того чтобы переместить кнопку в левую часть окна приложения и изменить ее размеры, после первого перевода градусов следует написать такие операторы в конце процедуры:
Button1.Left := 80;
Button1.Height := 50;
Button1.Width:= 150;
