Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Sitkin_Informatika_Programmirovanie_v_DELPHI.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
600.56 Кб
Скачать

Событиеипроцедураобработкисобытия

Одной из основ событийного программирования является собы-тийное управление. Это означает, что порядок выполнения команд,обычно разбитых по группам, определяется порядком возникновениясобытий.Событиеэто то, что происходит во время выполненияприложения. Например, загрузка или закрытие приложения, щелчокмышьюпоформеиликомпонентуформы,перемещениеуказателямыши по объекту, изменение содержимого полявсё это примерысобытий.Событиянаступаютврезультатедействийпользователя,операционной системы или по логике разработанного приложения.Некоторыесобытияописанывтабл.1.9.

Таблица1.9

НекоторыесобытиявWindows

Событие

Возникает

OnCreate

OnActivate

Призагрузкеформы(приложения)

OnClose

OnDeactivate

Призакрытииформы(приложения)

OnClick

Прищелчкемышью

OnDblClick

Придвойномщелчкемышью

OnMouseDown

Принажатиикнопкимыши

OnMouseUp

Приотпусканиикнопкимыши

OnMouseMove

Приперемещениимыши

OnEnter

Приполучениикомпонентомфокуса

OnExit

Припотерекомпонентомфокуса

OnChange

При изменении содержимого компонента

(например,содержимогоредактируемогополя)

OnKeyPress

Принажатииклавишиклавиатуры

При разработке проекта задача программистаопределить ре-акцию на то или иное событие, т.е. что должно быть выполнено, еслинаступило событие. Для этого необходимо создатьпроцедуру обра-ботки события. Сначала определяют уже созданный объект, для ко-торого создаётся процедура обработки события (например, команднаякнопкаButton1), активируя его щелчком мыши по нему или по егоимени в дереве объектовObject Tree Viewили выбором из раскры-вающегося списка окнаObject Inspector. Затем в окне редактораOb-jectInspectorвыбираютвкладкуEvents(рис.1.6).Слеваперечислены

Рис.1.6

имена событий, которые доступны для выбранного объекта, справаимена назначенных процедур (сначала никаких имён процедур нет).Исходя из логики проекта, определяют событие для выбранного объ-екта и выполняют двойной щелчок мышью в поле имени процедурыобработки выбранного события (правая колонка). В результате откро-ется окно редактора кодаUnit1.pasс помещённым в него шаблономпроцедуры. Процедуре автоматически присваивается имя из двух ча-стей: первая идентифицирует форму, содержащую объект, втораясамобъектисобытие,например,TForm1.Button1Click.Поимениможно

определить, что процедура будет вызвана на выполнение, когда про-изойдёт событиеOnClickпо компонентуButton1, расположенному наформеForm1. Между словамиbeginиendпрописывают операторы,которыедолжныбытьвыполненыподаннойпроцедуре.

Пример1.1

Разработаем простейший проект для ввода с формы фамилиистудентаиномераегогруппыиихвыводанаэту жеформупринаступлениинекоторыхсобытий.

После запускаDelphiв окнеObject Inspectorизменим значениесвойстваформыCaptionна«Ввод-выводданных».

Для ввода фамилии разместим на форме компонентEditи в окнеObject Inspectorобнулим значение свойстваText, чтобы на моментзапускаприложенияполедляввода фамилиибылопустым.

РядомскомпонентомEditразместимнаформекомпонентLabel,вокнеObjectInspectorизменимзначениесвойстваCaptionна«Фами-лия»это поможет будущему пользователю нашего приложения по-нять,чтоследуетввестивкомпонентEdit.

Для ввода номера группы поместим на форму компонентLa-beledEdit,вполеметки(свойство+EditLabel.Caption)запишем«Группа».

Для вывода введённого значения фамилии разместим на формекомпонентLabel, а для номера группыкомпонентMemo. ОбнулимсоответственнозначениясвойствCaptionиLinesэтихкомпонентов.

Вынесем на форму ещё два компонентаButton, изменив значе-ние свойстваCaptionна «Вывести фамилию» иLabel, изменив значениесвойстваCaptionна«Щёлкнипоформедлявывода№группы».

Получившийсяпримерныйвидформыизображённарис.1.7.

Рис.1.7

Вывод фамилии вLabel2свяжем со щелчком (событиемOnClick)по кнопкеButton1. Дляэтого, выделив компонентButton1, выберем вокнеObject InspectorвкладкуEventsи выполним двойной щелчок вполе имени процедуры обработки событияOnClick(рис. 1.6). В от-крывшемся шаблоне процедуры между словамиbeginиendдопол-нимеётекст

procedureTForm1.Button1Click(Sender:TObject);

begin

Label2.Caption'работувыполнил(а)'+Edit1.Text;

end;

Данная процедура изменяет значение свойстваCaptionкомпонентаLa-bel2, заменяя пустую запись метки на «работу выполнил», добавляясодержимое(свойствоText)редактируемогополяEdit1,т.е.фамилию.

Вывод номера группы вMemo1свяжем со щелчком по форме.Аналогично, но теперь дляForm1в окнеObject Inspectorна вкладкеEventsвыполнимдвойнойщелчоквполеименипроцедурыобработкисобытияOnClick. В открывшемся шаблоне процедуры между словамиbeginиendдополнимеётекст

procedureTForm1.FormClick(Sender:TObject);

begin

Memo1.Text'Группа№'+LabeledEdit1.Text;

end;

ВтораяпроцедуравписываетвполеMemo1«Группа№»исодержимое(свойствоText) редактируемого поля с меткойLabeledEdit1, т.е. номергруппы. Обе процедуры поочерёдно разместятся в модуле проекта,тексткоторогоотображаетредакторакодаUnit1.pas(рис.1.8).

Помимо модуля программный код генерируется и в головнойпрограмме. Для его просмотра следует дать команду из меню командProjectView Source, текст отобразитсяв редакторе кода (рис. 1.9).Текстполностьюсгене-

рировансредойинетребуетвмешательствапрограммиста. Головнаяпрограммаобеспечива-ет инициализацию при-ложенияивыводна

экранформы,приэтоммодульUnit1сописаниемформыподключает-сяк головнойпрограммеавтоматически.