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


 

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

44942. Политическое и экономическое развитие стран постсоветского зарубежья: интеграционные и дезинтеграционные тенденции 27.84 KB
  Разрыв сложившихся связей после распада Советского Союза был очень болезненным по оценкам от одной трети до половины падения экономики в странах-членах СНГ в 1992-1995 гг. СНГ. наметились два варианта дальнейшего развития СНГ. Интеграционные процессы в СНГ связаны прежде всего с Россией т.
44944. The Russian Federation. Российская Федерация 16.42 KB
  The country is wshed by 12 ses of 3 ocens: the Pcific the rctic nd the tlntic. There is hrdly country in the world where such vriety of scenery nd vegettion cn be found. There re severl mountin chins on the territory of the country: the Urls the Cucsus the lti nd others.
44945. Александр Николаевич Самохвалов 24.39 KB
  Александр Николаевич Самохвалов 21 августа 1894 Бежецк Тверская губерния Российская империя 20 августа 1971 Ленинград СССР крупнейший советский художник живописец график прикладник монументалист Заслуженный деятель искусств Российской Федерации член Ленинградской организации Союза художников РСФСР. Самохвалов Александр Николаевич родился 8 21 августа 1894 года в городе Бежецк Тверской губернии. Его отец Николай Дмитриевич Самохвалов занимался мелкой торговлей умер в 1917 году. Мать Самохвалова Елена Фёдоровна в девичестве...
44946. Организация вычисляемого перехода 41.46 KB
  Вычисляемый переход осуществляется при помощи команды ddwf PCF которая формально описывается так: сложить содержимое регистров W и PC с сохранением результата сложения в регистре PC имеется ввиду младший байт счетчика команд с названием PCL. Для вычисляемого перехода адрес в PC на момент исполнения команды ddwf PCF является как бы начальной точкой отсчета т. число находящееся в регистре W на момент исполнения команды ddwf PCF которое и будет приращением счетчика команд PC.
44947. Динамическая индикация 59.87 KB
  Для краткости эти регистры обозначим под названиями LED с соответствующей нумерацией. Например если результат измерения подсчета нужно вывести на индикацию как 4 разрядное десятичное число то двоичный результат измерения “прогоняется†через двоично-десятичное преобразование о нем позднее в итоге которого результат измерения помещается в младшие полубайты 4х регистров LED от LED0 до LED3.0 MHz ; DtL equ 0Ch DtH equ 0Dh D_H equ 0Eh D_L equ 0Fh Step equ 1Bh Led0 equ 1Ch Led1...
44949. Работа с EEPROM памятью данных 61.93 KB
  Поставим перед собой достаточно простую и конкретную задачу (что-то типа задания на первоначальную разработку). Допустим, что в ходе исполнения программы нужно изменить (модифицировать) содержимое пяти ячеек EEPROM памяти, начиная с адреса 7. Для простоты модификации (и для обеспечения наглядности наблюдения за происходящими в EEPROM памяти изменениями) к первому числу (по адресу 7) необходимо добавить 1...
44950. Однокристальные микроконтроллеры серии PIC 231 KB
  Микроконтроллеры семейств PIC (Peripheral Interface Controller) компании Microchip, обладающие особой популярностью, построены на основе передовых технологий микроконтроллеров. Им свойственны следующие особенности: электрически программируемые пользователем ППЗУ, минимальное энергопотребление, высокая производительность, хорошо развитая RISC-архитектура