28613

События, обрабатываемые формой

Доклад

Информатика, кибернетика и программирование

В этом случае создается объектнаследник того компонента который должен обрабатывать событие и специальный методобработчик этого события. Форма получает событие OnActivate при ее активизации. Форма получает это событие перед закрытием формы которое может наступить либо при вызове метода Close либо при выборе команды Close из системного меню. Это событие может наступить либо при вызове метода Close либо при выборе команды Close из системного меню.

Русский

2013-08-20

16.6 KB

8 чел.

Объектно-ориентированные библиотеки классов типа ObjectWindows фирмы Borland предоставляют более простой способ обработки сообщений. Все классы имеют ряд предопределенных обработчиков и “умеют” реагировать на стандартные события. Одним из назначений средств визуального программирования, к которым относится Delphi, является упрощение создания Windows-приложений. Delphi дает разработчику полный доступ к событийной модели работы Windows, максимально упрощая процесс обработки того или иного события. Естественно, невозможно предусмотреть все случаи и полностью инкапсулировать все сообщения Windows, которых более 200. Визуальные компоненты содержат обработчики наиболее общих (с точки зрения ядра Windows) сообщений. При необходимости создания обработчиков других сообщений можно воспользоваться объектно-ориентированной технологией. В этом случае создается объект-наследник того компонента, который должен обрабатывать событие, и специальный метод-обработчик этого события. Но в большинстве случаев можно обойтись теми обработчиками, которые предоставляют стандартные компоненты, включенные в состав Delphi.

События, обрабатываемые формой

Базовый интерфейсный элемент форма имеет 20 обработчиков событий. 

Форма получает событие OnActivate при ее активизации. Активизация формы может произойти при получении формой фокуса, например, когда пользователь нажал кнопку мыши в рабочей области формы.

Событие OnClose наступает при закрытии формы. Форма получает это событие перед закрытием формы, которое может наступить либо при вызове метода Close, либо при выборе команды Close из системного меню.

С помощью события OnCloseQuery можно разрешить или отменить закрытие формы. Это событие может наступить либо при вызове метода Close, либо при выборе команды Close из системного меню. В обработчике этого события изменяется значение параметра CanClose сообщения OnCloseQuery.

Событие OnCreate возникает при начальном создании формы. В обработчике данного события можно, например, задавать начальные значения свойствам формы и предусматривать другие различные действия, которые должны происходить в момент создания формы. Форма создается при запуске приложения либо при вызове метода Create.

Событие OnDestroy возникает на финальной стадии закрытия формы и может быть вызвано с помощью методов Destroy или Free либо закрытием главной формы приложения. 

Событие OnHide возникает при “скрытии” формы, то есть когда ее свойство Visible принимает значение False. 

Событие OnShow возникает, когда форма отображается (то есть когда ее свойство Visible принимает значение True). 

Событие OnPaint возникает при необходимости перерисовки содержимого формы. Например, оно может возникнуть при получении формой фокуса. 

Событие OnResize возникает при изменении размеров формы во время работы приложения. Обработчик этого события необходим только в том случае, если планируются какие-либо действия при изменении размеров формы. 

События от клавиатуры и мыши

Для большинства видимых элементов определен набор обработчиков событий, связанных с мышью и клавиатурой. Изначально источником этих событий является драйвер клавиатуры или драйвер мыши, затем ядро Windows преобразует их в стандартный вид и пересылает окну программы. Прежде чем послать сообщение о вводе с клавиатуры, ядро Windows определяет, какое окно является активным. В Delphi-программах активными элементами будут одна из форм (или главная форма) и элемент, определенный свойством ActiveControl.

События от клавиатуры получают только некоторые оконные компоненты.

Событие OnKeyPress возникает при нажатии клавиши на клавиатуре. Обычно это событие обрабатывается в том случае, когда необходима реакция на нажатие одной клавиши на клавиатуре. Параметр Key имеет тип Char и содержит ASCII-код нажатой клавиши. Для клавиш, которые не имеют ASCII-кодов (соответствующих символов), таких как Shift или F1, событие OnKeyPress не возникает. При использовании комбинаций клавиш, например Shift+A, возникает только одно событие OnKeyPress. Так, при нажатии комбинации Shift+A параметр Key будет иметь значение “А” (зависит от состояния переключателя Caps Lock). Для обработки нажатий клавиш, не имеющих ASCII-эквивалентов, и комбинаций клавиш необходимо использовать события OnKeyDown и OnKeyUp.

Событие OnKeyPress имеет тип TKeyPressEvent и описано следующим образом:

TKeyPressEvent = procedure (Sender: TObject; var Key: Char) of Оbject;

Событие OnKeyDown происходит при нажатии клавиши на клавиатуре. Обработчик этого события получает информацию о нажатой клавише и состоянии клавиш Shift, Alt и Ctrl, а также о нажатой кнопке мыши. Информация о клавише передается параметром Key, который имеет тип Word. Для определения того, какая именно клавиша была нажата, необходимо использовать коды виртуальных клавиш.

OnKeyDown(Sender: TObject; var Key: Word; Shift:TShiftState);

Параметр Key содержит код нажатой клавиши, а параметр Shift может иметь одно из следующих значений:

ssShift – нажата клавиша Shift;

ssAlt – нажата клавиша Alt;

ssCtrl – нажата клавиша Ctrl;

ssLeft, ssMiddle, ssRight – нажаты левая, средняя и правая кнопки мыши; ssDouble – нажаты правая и левая кнопки мыши.

Событие OnKeyUp является парным событием для OnKeyDown и возникает, когда пользователь отпускает нажатую ранее клавишу. Как и для события OnKeyDown, возможно распознать клавиши типа Shift, Alt и Ctrl и кнопки манипулятора мышь

Для большинства видимых элементов определен набор обработчиков событий, связанных с мышью.

Событие OnClick возникает при нажатии кнопки мыши в области компонента. Это событие также происходит, когда пользователь:

1) выбрал элемент таблицы (grid), древовидного списка (outline), списка или комбинированного списка нажатием одной из клавиш управления курсором;

2) нажал клавишу Enter, когда активным элементом формы была кнопка со значением по умолчанию (заданная свойством Default);

3) нажал клавишу Esc, когда в активной форме имелась кнопка Cancel (заданная свойством Cancel);

4) нажал клавишу для вызова кнопки. Например, если кнопка имела заголовок ‘&Bold’, клавишей для вызова кнопки будет клавиша “В”.

Событие OnDblClick возникает при двойном нажатии кнопки мыши в области компонента. 

Событие OnMouseDown происходит при нажатии кнопки мыши, когда курсор находится в области компонента. Обработчик этого события используется в тех случаях, когда необходимо предпринять какие-либо действия при нажатии кнопки мыши в области компонента. Параметр Button этого события позволяет определить, какая кнопка была нажата, а параметр Shift – были ли нажаты клавиши Shift, Ctrl или Alt при нажатии кнопки мыши. Событие OnMouseDown имеет тип TMouseEvent, описанный следующим образом:

TMouseEvent = procedure (Sender: TObject; Button: TMouseButton; Shift:

TShiftState; X, Y: Integer) of Оbject;

Параметры Х и Y содержат координаты курсора мыши в момент нажатия клавиши.

Событие OnMouseMove происходит при перемещении манипулятора мышь. Параметр Shift позволяет определить, были ли нажаты клавиши Shift, Ctrl или Alt при нажатии кнопки мыши. Событие OnMouseMove имеет тип TMouseMoveEvent, описанный следующим образом:

TMouseMoveEvent = procedure(Sender; TObject; Shift: TShiftState; X, Y: Integer) of Оbject; Событие OnMouseUp является парным событию OnMouseDown и возникает в том случае, когда пользователь отпустил ранее нажатую кнопку мыши. Параметр Shift позволяет определить, были ли при этом нажаты клавиши Shift, Ctrl или Alt. Параметры X и Y содержат координаты курсора мыши в момент нажатия клавиши. Параметр Button имеет тип TMouseButton.

У событий системы Delphi существует приоритет. Событие OnClick является более важным, чем OnMouseUp, и должно обрабатываться первым. Приоритет события OnDblClick выше, чем приоритет событий OnMouseDown и OnMouseUp.

Событие OnEnter возникает, когда компонент получает фокус ввода.

Событие OnExit возникает, когда компонент теряет фокус.

События протокола Drag&Drop

Операционная система Windows широко использует специальный прием связывания программ с данными, который называется Drag&Drop (перетащи и отпусти). Разработчик может предусмотреть возможность “перетаскивания” целых компонентов, а также обмена содержимым между компонентами. В Delphi этот протокол базируется на двух свойствах и трех событиях. 

Свойство DragMode определяет, как будет выполняться весь комплекс действий, связанных с Drag&Drop: dmManual – вручную; dmAutomatic – автоматически (свойствами и методами компонентов).

Свойство DragCursor определяет вид указателя мыши в момент, когда над компонентом “перетаскиваются данные”.

Событие OnDragOver возникает в момент перемещения указателя мыши с “грузом” над компонентом. Заголовок процедуры:
Procedure (Sender, Source : TObject; X, Y:Integer; State : TDragState; 

Var Accept: Boolean);
где Sender – компонент, который возбудил событие; Source – компонент-отправитель “груза”; X, Y – текущие координаты указателя мыши в пикселях клиентской области компонента; State – состояние указателя (dsDragEnter – только что появился над компонентом; dsDragLeave – только что покинул компонент или была отпущена кнопка мыши; dsDragMove – перемещается над компонентом). В параметре Accept обработчик сообщает, готов ли компонент принять данные.

Событие OnDragDrop возникает в случае, когда пользователь “отпустил” перетаскиваемый объект. Параметры обработчика совпадают по назначению с одноименными параметрами OnDragOver. В обработчике OnDragDrop должен содержаться код, который будет выполняться, когда пользователь “отпустил” объект. Параметр Source указывает на объект, который был “отпущен”, а параметр Sender – на объект, принявший перетащенный объект. 


 

А также другие работы, которые могут Вас заинтересовать

66360. Пори року 45 KB
  Мета: ознайомити учнів з новою лексикою опрацювати в говорінні та активізувати з ранішевивченою по цій темі; навчити учнів нази вати улюблену пору року за допомогою мовленнєвого зразка My fаvourite seаson is; удосконалювати навички усного мовлення й читання...
66363. ENGLISH MARATHON RACES 49.5 KB
  We have two teams, representing 7”A” and 7”B” forms. They are to pass successfully a number of tasks. Then according to their results we will define the winner, that’s the best and the smartest team. To cope with this task we have a commission of strict jury consisting of...
66364. English Learners’ Party 37 KB
  Presenter 1: Dear teachers, pupils and guests, we are happy to see you here. Welcome to our English Party. Presenter 2: By the way, do you know why the pupils go to school? P1: Maybe to study school subjects? P2: Well, only this? P1: Of course not. To meet their friends!
66366. Математична естафета 95 KB
  Мета проведення: сприяти розвитку полікультурних та комунікативних компетентностей учнів; стимулювати інтерес і зацікавленість до вивчення математики та до підтримки особистої спортивної підготовки на достатньому рівні.
66367. Кожен творець свого щастя 57.5 KB
  Мета уроку: Допомогти дітям усвідомити розуміння тогощо для кожної людини поняття щастя неповторнещо кожна людина може сама творити своє власне щасливе життя. Показати на літературних прикладах та ситуаціях із життящо щастя в кожному із насщо вміння поділитися ним з іншимиробить людину...
66368. Взаєморозуміння — основа дружнього колективу 39 KB
  Кого ви бачите у дзеркальці Вам подобається зображення Чому Поміняйтесь дзеркальцем із товаришем. Змінилось зображенняяке ви бачите А у вашого товариша Чому Кожен з нас неповторний несхожий на іншого має свою зовнішність характер здібності чесноти і недоліки.