Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MEGAPACK_version_final.doc
Скачиваний:
6
Добавлен:
15.09.2019
Размер:
2.34 Mб
Скачать

Виды событий.

Давайте посмотрим на возможные значения Event.What. Существуют 4 основных базовых класса событий: события от мышки, события от клавиатуры, события сообщений и "пустые" события. Каждый класс имеет определенную маску, так что Ваш объект может быстро определить какой тип события случился, не заботясь о его конкретном виде. Например, вместо того, чтобы проверять на 4 различных вида событий от мышки, Вы можете просто проверить, есть ли флаг события в маске. Вместо

if Event.What and (evMouseDown or evMouseUp or evMouseMove or

evMouseAuto) <> 0 then .

Вы можете использовать

if Event.What and evMouse <> 0 then .

Доступны следующие маски: evNothing (для "пустых" событий),

evMouse, для событий от мышки; evKeyBoard, для событий от

клавиатуры и evMessage для сообщений.

События от мышки.

Существуют 4 вида событий от мышки: нажатие или отпускание любой кнопки, изменение позиции или "авто" событие. При нажатии на кнопку мышки генерируется событие evMouseDown. Когда кнопка отпускается генерируется событие evMouseUp. Перемещение мышки генерирует событие evMouseMove. Если Вы держите кнопку нажатой, Turbo Vision периодически генерирует событие evMouseAvto, позволяя Вашей программе такие действия как повторяющийся скроллинг. Все записи событий от мышки включают позицию мышки, так что объект, обрабатывающий событие знает где находилась мышка в этот момент.

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

События от клавиатуры намного проще. Когда Вы нажимаете клавишу, Turbo Vision генерирует событие evDown, которое содержит информацию о нажатой клавише.

События сообщений.

События сообщений бывают 3 видов: команды, общие сообщения и пользовательские сообщения. Они отличаются обработкой как будет объяснено позднее. Команды помечаются в поле What через evCommand, общие сообщения через evBroadcast и пользовательские сообщения константой определенной пользователем.

"Пустые" события.

"Пустые" события это в действительности мертвые события. Оно перестало быть событием, поскольку полностью обработано. Если поле What в записи события содержит значение evNothing, то эта запись не содержит полезной информации, которая требует обработки. Когда объект Turbo Vision заканчивает обработку события, он вызывает метод ClearEvent, который устанавливает поле What в evNothing, указывая что событие было обработано. Объекты должны просто игнорировать события evNothing, поскольку они уже обработаны другим объектом.

Передача событий.

Видимые элементы Turbo Vision работают по принципу "Говори только когда к тебе обратятся". Это не похоже на активный поиск ввода, они скорее пассивно ожидают, когда монитор событий скажет им, что произошло событие, на которое требуется отклик. Для того чтобы Ваша программа на Turbo Vision делала то что Вы хотите, Вы должны не только сказать видимым элементам, что делать, когда случается определенное событие, но и должны понимать как события передаются в Ваши видимые элементы. Главное в получении событий в нужном месте - это правильная маршрутиризация событий. Некоторые события передаются всем элементам программы, другие направляются точно в определенные части программы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]