Вариант №1
Лабораторно-практическая работа№3
Тема: События и реакция на них
Цель: Познакомиться с основными событиями в Delphi, научиться создавать простые приложения, построенные на алгоритмах разветвляющейся структуры.
Теоретическая часть
Каждая форма и компонент имеют предварительно установленный набор событий, которые они могут обрабатывать. По умолчанию форма и компонент не отвечают ни на какое заранее установленное событие. Вы ответственны за выбор событий, на которые форма и компоненты отвечают. В большинстве приложений Delphi форма и каждый компонент отвечают на несколько событий. Реакция зависит от того, как форма и компоненты взаимодействуют с пользователем.
Чтобы присоединить процедуру обработки события к форме или компоненту, надо выполнить следующие шаги:
1. Выберите форму или компонент, нажав на неё. Инспектор объекта отображает свойства или события для текущей формы или компонента.
2. Нажмите на закладку страницы «События» в Инспекторе объекта. Это окно показывает текущие события, которые уже обработаны. Первоначально не имеется никаких обработанных событий, и пункты для различных событий пусты.
3. Дважды нажмите мышью на строке события, которое Вы хотите обработать. Delphi объявит связанный метод обработки события и отобразит этот метод.
4. Напечатайте операторы, которые заставляют метод обработки события ответить на нужное событие. Например, чтобы закрыть форму, Вы можете напечатать оператор Close.
![]() Событие | Момент возникновения и параметры процедур |
OnClick | Возникает при нажатии левой клавиши мыши в области компонента или при нажатии клавиши Enter, если на компонент установлен фокус |
OnDblClick | Возникает при двойном нажатии левой клавиши мыши в области компонента |
OnDragDrop | Возникает в случае, когда пользователь «отпустил» перетаскиваемый объект. Параметр Source соответствующей процедуры-обработчика содержит указатель на объект, который был «отпущен», а параметр Sender — на объект, принявший «перетаскиваемый» |
OnDragOver | Возникает в случае, когда пользователь «перетаскивает» объект для его размещения в рамках другого компонента |
OnEndDrag | Возникает в конце процедуры «перетаскивания» объекта. Параметр Sender соответствующей процедуры-обработчика указывает на «перетаскиваемый» объект, а параметр Target — на его образ в рамках принимающего компонента |
OnMouseDown | Возникает при нажатии любой клавиши мыши в области компонента. Параметр Button соответствующей процедуры-обработчика этого события позволяет определить, какая клавиша была нажата, параметр Shift — были ли нажаты клавиши Shift, Ctrl или Alt вместе с клавишей мыши, а параметры X и Y содержат координаты курсора мыши в момент нажатия клавиши |
OnMouseMove | Возникает при наведении манипулятора «мышь» |
OnMouseUp | Парное для OnMouseDown. Возникает, когда ранее нажатая клавиша мыши отпущена. Имеет те же параметры, что и OnMouseDown |
OnEnter | Возникает, когда компонент получает фокус ввода |
OnExit | Возникает при потере фокуса компонентом |
OnKeyDown | Возникает при нажатии любой клавиши на клавиатуре. Параметр Key соответствующей процедуры-обработчика имеет тип Word и может содержать коды виртуальных клавиш. Параметр Shift передает информацию о нажатии клавиш , , и о нажатии клавиш мыши |
OnKeyPress | Возникает при нажатии клавиши на клавиатуре. Параметр Key соответствующей процедуры-обработчика имеет тип Char и содержит ASCII-код нажатой клавиши. Для клавиш, которые не имеют ASCII-кодов (например, , или ), событие не возникает |
OnKeyUp | Парное для OnKeyDown. Возникает, когда пользователь отпускает нажатую ранее клавишу. Имеет те же параметры, что и OnKeyDown |
Практическая часть
Спроектируйте следующую форму для решения задачи нахождения максимального из двух чисел.

Обработка событий нажатия клавиш:
Кнопка «Нажми меня» должна «убегать от мышки». Для этого переключаемся на вкладку События и пишем событие OnMouseMove, дважды щелкнув в строчке, изменяем координаты кнопки.
procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Button1.Top:=random(200);
Button1.Left:=random(200);
end;
Кнопка «Исчезни» должна исчезать при нажатии на нее
procedure TForm1.Button2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Button2.Visible:=False;
end;
Кнопка «Вычислить» должна производить вычисления и отображать результат в поле для результата, у нас Label1. Если числа равны, должно появиться окошко, сообщающее об этом.
Процедура MessageBox('Комментарий ', 'Надпись в строке заголовка ', один из параметров);
MB_ABORTRETRYIGNORE - Окно сообщений включает три кнопки: Abort, Retry, and Ignore.
MB_OK Окно сообщений включает кнопку: OK.
MB_OKCANCEL Окно сообщений включает : OK and Cancel.
MB_RETRYCANCEL Окно сообщений включает : Retry and Cancel.
MB_YESNO Окно сообщений включает : Yes and No.
MB_YESNOCANCEL Окно сообщений включает : Yes, No, and Cancel.
procedure TForm1.Button3Click(Sender: TObject);
Var a, b, max: real;
begin
a:=strtofloat(Edit1.Text);
b:=strtofloat(Edit2.Text);
if a=b then Application.MessageBox('Числа равны!', 'Сообщение',MB_OK);
if ab then Max:= a else Max:=b;
Label1.Caption:=Format('Maximum= %f',[max]);
end;
Format – задает форматированный вывод с точностью 2 знака после запятой.
Кнопка «Очистить» должна очищать все заполняемые данные
procedure TForm1.Button4Click(Sender: TObject);
begin
Edit1.Text:='';
Edit2.Text:='';
Label1.Caption:='';
end;
Кнопка «Close» - это кнопка с рисунком - BitButton, в качестве параметра Kind у которой указывается bkClose.
Индивидуальные задания:
3.1. Задание 2 уровня:
Даны три действительных числа. Возвести в квадрат те из них, значения которых неотрицательны, и в четвёртую степень – отрицательные.
3.2. Задание 3 уровня:
Написать программу нахождения суммы большего и меньшего из трёх чисел.
Написать отчет, сдать преподавателю.