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 – на объект, принявший перетащенный объект. 


 

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

17625. Многофакторная регрессия: основные понятия 180 KB
  Тема: Многофакторная регрессия: основные понятия План: Что такое множественная регрессия Как будут выглядеть результаты множественной регрессии. Как выглядит компьютерная распечатка результатов множественной регрессии. Окружающий нас мир мн...
17626. Интерпретация результатов многофакторного моделирования 156 KB
  Тема: Интерпретация результатов многофакторного моделирования Пример. Реклама в журналах. Название журнала Y тариф одна страница цветной рекламы дол. X1 планируемая аудитория тыс. че...
17627. Статистические выводы по многофакторной модели 247 KB
  Тема: Статистические выводы по многофакторной модели Насколько хороши наши прогнозы Этот раздел следует рассматривать в основном как обзор поскольку стандартное отклонение оценки Se и коэффициент детерминации R2 имеют для множественной регрессии вообще гово
17628. Сложности и проблемы, связанные с множественной регрессией 62 KB
  Тема: Сложности и проблемы связанные с множественной регрессией К сожалению на практике множественная регрессия не всегда позволяет получить результаты о которых пишут в учебниках. В этой лекции приведен перечень потенциальных проблем и некоторые соображения п
17629. Составление отчетов: представление результатов множественной регрессии 87.5 KB
  Тема: Составление отчетов: представление результатов множественной регрессии Умение грамотно изложить представить результаты проделанной работы важная составляющая профессиональной деятельности в большинстве областей. Менеджер использует соответствующие к
17630. Фундаментальні поняття контроллінга 109.5 KB
  Тема 1. Фундаментальні поняття контроллінга 1. Сутність принципи і сфера застосування контроллінга 2. Мета предмет методи і об’єкти контроллінга 3. Функції та завдання контроллінга 1. Сутність принципи і сфера застосування контроллінга Під контроллінгом ...
17631. Організаційна структура та функції управління 140 KB
  Тема 2. Організаційна структура та функції управління 1. Вибір організаційної структури управління 2. Функції управління 3. Роль контроллінга в процесі управління Вибір організаційної структури управління Сучасна теорія та практика менеджменту вва...
17632. Організаційні аспекти створення служби контроллінга 117.5 KB
  Тема 3. Організаційні аспекти створення служби контроллінга 1. Принципи створення служби контроллінга 2. Структура і персонал служби контроллінга 3. Функції та завдання служби контроллінга 4. Информационные потоки на предприятии в системе контроллинга 5.Возможн
17633. АВС – аналіз та XYZ – аналіз 244.5 KB
  Тема 5. АВС – аналіз та XYZ – аналіз Поняття АВС – аналізу та XYZ – аналізу. Проведення ABCаналізу Визначення А В Ззадач XYZаналіз структури споживання XYZаналіз по точності прогнозу 1.1. Что мы понимаем под АВСанализом ABCанализ является важным и