Работа с мышью 107

4.2.8. Эмуляция клавиатуры

В модуль F_Mouse включены процедуры и функции, облегчающие разработку программ, в которых диалог с пользователем реализуется как с использованием клавиатуры, так и с помощью мыши. Многие диалоговые программы используют различного рода указатели (опции), обеспечивающие выбор одного из нескольких возможных вариантов. В модуле такие элементы называются элементами выбора. Для задания элементов выбора предусмотрен следующий тип данных:

type

MouseItemType = record

X1,Y1,X2,Y2: Integer; /Текстовые координаты области} Butt: Word; {Условия вызова} Key : Word {Скан-код клавиши}

end;

Как нетрудно заметить, в этом типе предусмотрены поля для определения положения каждого из элементов выбора на экране (X1...Y2), а также условие выбора (Butt) и код той клавиши (Key), с помощью которой выбирается этот элемент. Предполагается, что пользователь (программист) сам создает на экране изображение диалогового элемента. После этого он обращается к процедуре SetMouseItem, вызов которой делает элементы «известными» для подпрограмм KeyOrMousePressed и ReadKeyOrM.ou.se.

Процедура SetMouseItem. Задает один или более элементов выбора. Заголовок:

Procedure SetMouseItem(BItem: Byte; var Items).

Здесь NItem — количество определяемых элементов; /ferns — массив из NIem элементов типа MouseItemType (описание типа см. в п.4.2.1).

Если к моменту обращения к этой процедуре уже был определен список элементов выбора, он безвозвратно теряется. Процедура копирует список элементов в динамическую память, поэтому последующее изменение списка без обращения к процедурам SetMouseItem/'AddMouseItem игнорируется.

Процедура AddMouseItem. Добавляет еще один элемент к списку элементов выбора. Заголовок:

Procedure AddMouseItem(Item: MouseItemType).

После обращения к процедуре старый список элементов выбора дополняется еще одним элементом.

Процедура ClearMouseItem. Очищает список элементов выбора. Заголовок:

Procedure ClearMouseItem.