Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lection.doc
Скачиваний:
13
Добавлен:
16.11.2019
Размер:
343.55 Кб
Скачать
  1. Запись события. Тип tEvent.

Для упаковки и передачи событий в TurboVision определен специальный тип – запись с вариантами TEvent:

TEvent = record

What: Word;

case Word of

evNothing: ( );

evMouse: (

Buttons: Byte;

Double: Boolean;

Where: TPoint);

evKeyDown:(

case Integer of

0: (KeyCode: Word);

1: (CharCode: Char; ScanCode: Byte));

evMessage: (

Command: Word;

case Word of

0: (InfoPtr: Pointer);

1: (InfoLong: Longint);

2: (InfoWord: Word);

3: (InfoInt: Integer);

4: (InfoByte: Byte);

5: (InfoChar: Char));

end; .

Поле TEvent.What содержит информацию о виде события. Это битовое поле: каждому классу событий соответствует один бит (события от клавиатуры) или группа битов (события от мышки и события-сообщения) (см. рис.9). Для работы с битами TEvent.What определен набор констант evXXXX (Таблица 3).

Константы evNothing (пустое событие), evMouse (мышь), evKeyboard (клавиатура) и evMessage (сообщение) могут использоваться для маскирования событий; они позволяют быстро определить, к какому классу принадлежит событие. Например, для определения, является ли событие событием от мышки, удобно использовать код

if Event.What and evMouse <> 0 then DoMouseEvent; ,

не проверяя отдельно четыре первых бита TEvent.What.

Оставшиеся неопределенными биты TEvent.What программист может использовать для новых видов событий.

Рис.9. Структура поля TEvent.What.

Таблица 3. Константы evXXXX.

Константа

Значение

Назначение

evMouseDown

evMouseUp

evMouseMove

evMouseAuto

evKeyDown

evCommand

evBroadcast

$0001

$0002

$0004

$0008

$0010

$0100

$0200

Кнопка мышки нажата.

Кнопка мышки отпущена.

Мышка движется.

Кнопка мышки удерживается нажатой (авто-событие).

Клавиша нажата.

Событие-команда.

Событие-общее сообщение.

Маски для классов событий

evNothing

evMouse

evKeyboard

evMessage

$0000

$000F

$0010

$FF00

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

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

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

Событие-сообщение (команда, общее сообщение или пользовательское сообщение).

В зависимости от содержания поля TEvent.What, заполняется та или иная группа полей из оставшихся в записи TEvent.

Если TEvent содержит запись события от мышки, то поле Buttons указывает, какая кнопка была нажата или отпущена, Double устанавливается в True, если было произведено двойное нажатие, а поле Where содержит координаты курсора мыши в координатной системе экрана TApplication.

В случае события от клавиатуры поле KeyCode содержит скэн-код нажатой клавиши.

Если же TEvent – запись события-сообщения, то в поле Command содержится код команды, а в одном из полей InfoPtr, InfoLong, InfoWord, InfoInt, InfoByte или InfoChar может помещаться дополняющая команду информация.

Пустому событию соответствует значение поля What, равное evNothing.

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