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

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

Function KeyOrMousePressed: Boolean.

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

Function ReadKeyOrMouse: Char.

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

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

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

4.2.9. Обработка событий от мыши

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

type