TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

Документация   

Странности

FAQ

Ссылки

Форум

Гостевая книга

Рассылка

Благодарности

Об авторе

 

 

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.

Процедура освобождает динамическую память, выделенную для списка элементов выбора, и присваивает внутренней переменной NMouseItem (количество элементов выбора) значение 0.

Функция KeyOrMousePressed. Возвращает True, если нажата любая клавиша или выбран один из элементов выбора. Заголовок:

Function KeyOrMousePressed: Boolean.

Функция ReadKeyOrMouse. Возвращает расширенный код нажатой клавиши или выбранного элемента выбора. Заголовок:

Function ReadKeyOrMouse: Char.

При обращении к функции вначале проверяется состояние клавиатуры:

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

В поле Key нужного элемента выбора пользователь должен поместить расширенный код клавиши, связанной с этим элементом выбора. Если младший байт этого слова равен нулю, функция устанавливает внутренний флаг DoubleChar в значение True, что обеспечивает выдачу второго байта этого слова при повторном обращении к функции. Например, если Вы хотите, чтобы с некоторым элементом была связана клавиша F1, Вам необходимо поместить в младший байт поля Key значение 0, а в старший — значение 59. Тогда при первом обращении к функции программа получит значение #0, а при втором — #59, что и представляет собой расширенный код клавиши F1.

 

Глава 4

Оглавление

На первую страницу

Rambler's Top100 Rambler's Top100
PROext: Top 1000

(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz