Событие и процедура обработки события
Вид созданной формы подсказывает, как работает приложение. Очевидно, что пользователь должен ввести в поле редактирования значение веса в фунтах и щелкнуть на кнопку <Пересчет>. Щелчок на изображении командной кнопки - это пример того, что в Windows называется событием.
Событие - это то, что происходит во время работы приложения в Delphi у каждого события есть имя. Например, щелчок кнопкой мыши - это событие OnClick, двойной щелчок мышью - событие OnDblClick.
Таблица 6. События Windows
|
Событие |
Происходит |
|
|
OnClick |
При щелчке кнопкой мыши |
OnDblClick |
При двойном щелчке кнопкой мыши |
OnEnter |
Перед тем, как элемент управления действительно получает фокус |
OnError |
Когда элемент контроля обнаруживает ошибку и не может вернуть информацию об ошибке вызывающей программе |
OnExit |
Непосредственно перед тем, как элемент управления теряет фокус |
OnKeyDown |
При нажатии клавиши. События OnKeyDown и OnKeyPress - это чередующиеся, повторяющиеся события, которые происходят до тех пор, пока не будет отпущена удерживаемая клавиша. |
OnKeyPress |
Когда пользователь нажимает клавишу, которая генерирует печатаемый символ. Может происходить также при одновременном нажатии клавиши печатаемого символа и клавиши <Ctrl>. Не происходит при нажатии клавиш <Tab>, <Enter> и клавиш перемещения курсора. |
OnKeyUp |
При отпускании нажатой клавиши |
OnMouseDown |
При нажатии кнопки мыши |
OnMouseMove |
При перемещении мыши |
OnMouseUp |
При отпускании кнопки мыши |
|
Реакцией на событие должно быть какое-либо действие. Например, реакцией на событие OnClick, произошедшее на кнопке <Пересчет>, должен быть пересчет веса из фунтов в килограммы. В Дельфи реакция на событие реализуется как процедура обработки события. Таким образом, задача программиста состоит в написании необходимых процедур обработки событий. Методику создания подобных процедур рассмотрим на примере процедуры обработки события для командной кнопки.
Сначала необходимо выделить объект, для которого создается процедура обработки события. В нашем примере таким объектом является командная кнопка <Пересчет>. Затем следует выбрать вкладку Events (события) диалогового окна Object Inspector. На вкладке будет отображен список событий, которые способен воспринимать маркированный (выделенный) компонент. Список событий для наше командной кнопки приведен на рисунке 9.
Рисунок 9.
В левой колонке вкладки Events перечислены имена событий, на которые может реагировать маркированный объект. Если для события определена процедура обработки, то в правой колонке рядом с именем события выводится имя этой процедуры.
Для того, чтобы создать процедуру обработки события, необходимо выполнить двойной щелчок в поле имени процедуры обработки события (т.е. в правой колонке). В результате откроется окно редактора кода Unit1.pas (в Дельфи) кодом называется текст программы) с шаблоном процедуры обработки события (рисунок 10), который создается в Дельфи автоматически.
Рисунок 10.
Дельфи присваивает процедуре обработки события имя, которое состоит из двух частей. Первая часть имени идентифицирует форму, содержащую объект, для которого создается процедура обработки события. Вторая часть имени идентифицирует сам объект и событие. В нашем примере имя формы - Form1, имя командной кнопки - Button1, а имя события Click.
В окне редактора кода между begin и end можно печатать инструкции языка Object Pascal, реализующие процедуру обработки события. Ниже приведен текст процедуры обработки события OnClick для командной кнопки <Пересчет> :
procedure TForm1.Button1Click(Sender: TObject); var f:real; //вес в фунтах k:real; //вес в килограммах
begin f:=StrToFloat(Edit1.Text); //перевели содержимое Edit1 в число k:=f*0.4059; label2.Caption:=Edit1.text+' фунт(а/ов) это '+ FloatToStr(k)+' килограмм'; end;
[an error occurred while processing this directive]
Программа получает исходные данные из поля редактирования Edit1 путем обращения к свойству Text. Свойство Text содержит строку символов (текст), поэтому в программе для преобразования изображения числа в действительное число используется функция StrToFloat.
Вычисленное значение выводится программой в поле метки Label2 путем присвоения этого значения свойству Caption. Для преобразования действительного числа в его изображение (текст сообщения с результатом пересчета) используется функция FloatToStr.