к содержимому буфера клавиатуры, еще
KEYBOARD или CT II-функцией KEYSEND().
Использование KEYSEND() предпочтительней, т.к. позволяет добавлять
символы к содержимому буфера клавиатуры, еще не обработанному
прикладной программой.
Внимание!
Поскольку при нажатии клавиши ее код перенаправляется процедуре,
указанной TRAPANYKEY(), то одновременно с этим нельзя организовать
прерывание по нажатию клавиш средствами Clipper.
Поскольку внутренние процедуры ввода не реентерабельны, то в
вызываемой процедуре нельзя использовать Clipper-команды и функции
ввода с клавиатуры типа GET/READ, PROMPT, ACCEPT, INKEY(0), MEMOEDIT()
и т.п.
Функция INPUTMODE(.T.) позволяет определить, какая из команд и функций
ввода активна при входе в вызываемую процедуру.
Примечания
. Если заданная процедура отсутствует в выполняемой программе, то
установка ее имени внутренними средствами CT II не осуществляется и
сообщение об ошибке времени выполнения не формируется. Формирование
на этапе компоновки предупреждения об отсутствии процедуры можно
обеспечить включением в текст программы Clipper-оператора
EXTERNAL <список идентификаторов процедур>.
. Передаваемые устанавливаемой процедуре коды клавиш должны в ней
обрабатываться или транслироваться с помощью Clipper-команды KEYBOARD
далее, иначе будет невозможен не только дальнейший ввод, но и даже
прерывание выполнения программы нажатием комбинации клавиш <Alt><C>.
. В отличие от Clipper-команды SET KEY TO рекурсивные входы
блокируются.
Примеры
. Во время работы MEMOEDIT() для включения подстановки аббревиатур в
процедуре обработки прерывания проверяются (по списку аббревиатур) три
последних введенных символа. При сравнении с помощью KEYSEND() в буфер
клавиатуры посылаются соответствующие фразы. Вызов KEYSEND() со
значением .T. второго параметра позволяет избежать потерь даже при