Определяет выполнение команды при нажатии определенной клавиши, или комбинации клавиш, или нажатии кнопки мыши.

ON KEY [LABEL KeyLabelName] [Command]

Параметры

LABEL KeyLabelName

Определяет имя соответствующей клавиши (или комбинации клавиш). Параметр KeyLabelName является символьным выражением или числом , или именем соответствующей клавиши. В следующей таблице представлен список имен некоторых специальных клавиш. 
Visual FoxPro key label assignments (системные обозначения клавиш).

Для Клавиши Значение параметра KeyLabelName 
ArrowLeft screenshot

LEFTARROW

ArrowRight screenshot

RIGHTARROW

ArrowUp screenshot

UPARROW

ArrowDown screenshot

DNARROW

HOME

HOME

END

END

PAGE UP

PGUP

PAGE DOWN

PGDN

DEL

DEL

BACKSPACE

BACKSPACE

SPACEBAR

SPACEBAR

INS

INS

TAB

TAB

SHIFT+TAB

BACKTAB

Left Brace

LBRACE

Right Brace

RBRACE

ENTER

ENTER

F1 to F12

F1, F2, F3 ...

CTRL+F1 to CTRL+F12

CTRL+F1, CTRL+F2 ...

SHIFT+F1 to SHIFT+F12

SHIFT+F1, SHIFT+F2 ...

ALT+F1 to ALT+F12

ALT+F1, ALT+F2, ALT+F3 ...

ALT+0 to ALT+9

ALT+0, ALT+1, ALT+2 ...

ALT+A to ALT+Z

ALT+A, ALT+B, ALT+C ...

CTRL+LEFT ARROW

CTRL+LEFTARROW

CTRL+RIGHT ARROW

CTRL+RIGHTARROW

CTRL+HOME

CTRL+HOME

CTRL+END

CTRL+END

CTRL+PAGE UP

CTRL+PGUP

CTRL+PAGE DOWN

CTRL+PGDN

CTRL+A TO CTRL+Z

CTRL+A, CTRL+B, CTRL+C ...

CTRL+0

CTRL+0

RIGHT MOUSE BUTTON

RIGHTMOUSE

LEFT MOUSE BUTTON

LEFTMOUSE

MOUSE BUTTON

MOUSE

ESC

ESC

Command

Определяет команду, которая должна быть выполонена при нажатии указанной в команде клавиши, или комбинации клавиш,  или кнопки мыши. Данная команда может быть параметризована, т. е. может содержать параметры в качестве вычисляемых функций или переменных. Например: 
  Копировать код
ON KEY LABEL ALT+V WAIT WINDOW "Version: " + VERSION()
Вы можете использовать в команде переменные, которые должны быть типа Public. Например: 
  Копировать код
PUBLIC message
message = "Default drive: " + SYS(5)
ON KEY LABEL ALT+D WAIT WINDOW message

Комментарии

В команде ON KEY LABEL  обычно указывается вызов по команде DO пользовательской процедуры.

Команда ON KEY LABEL немедленно запускает на выполнение соответствующую процедуру в период выполнения команд READ, BROWSE, EDIT, CHANGE, или пользовательских меню. Если в период выполнения программы Вы нажимаете соответствующую клавишу, или кнопку мыши, система Visual FoxPro выполняет текущую программную строку и переходит к выполнению процедуры, указанной в команде ON KEY LABEL. Несколько заданных в программном модуле команд ON KEY LABEL остаются Активными после завершения работы программы, в которой они определены. Данные определения можно задавать и в Командном окне. 

Для восстановления стандартного поведения определенных клавиш выполните команду ON KEY LABEL KeyLabelName (без указания команды выполнения). Для восстановления всех клавиш используется команда ON KEY.

Замечание:
Для того, чтобы предотвратить рекурсивное выполнение процедур, определенных командами ON KEY LABEL, используйте команду  PUSH KEY CLEAR для временного отключения активности соответствующих процедур ON KEY LABEL. Можно использовать команду POP KEY для восстановления активности клавишных комбинаций ON KEY LABEL.

Команды, определенные в ON KEY LABEL не работают в системном менюVisual FoxPro, диалоговых боксах, предупреждениях, и так далее (в системном сервисе). Однако, соответствующие пользовательские настройки могут использоываться в системных окнах, таких как: Текстовый редактор, Командное Окно, окно Трассировки, и так далее. 

В отличие откоманды ON KEY, можно использовать несколько команд ON KEY LABEL. Например, определить действия для каждой клавиши со стрелками, или каждой кнопки мыши.

При выполнении команды ON KEY LABEL значение функции PARAMETERS( ) = 0. См. дополнительно PARAMETERS( ).

В системе Visual FoxPro не все события могут быть перехвачены, так как они управляются ОС Windows. В конкретных случаях использования команд ON KEY LABEL MOUSE, ON KEY LABEL LEFTMOUSE, или ON KEY LABEL RIGHTMOUSE соответствующие процедуры не будут выполнены, так как данные события зарезервированы системой Windows. Данное ограничение действует также на комбинацию клавиш  CTRL+0, которая поддерживается в команде ON KEY LABEL, но вернет пустое значение. 

Замечание: Команда ON KEY LABEL действует за пределами конкретной формы; в тоже время, событие KeyPress работает только в текущей активной форме для обработки нажатия клавиш.

Пример

В следующем примере отображается сообщение, когда нажимается одна из стрелок (клавиш со стрелками).

  Копировать код
CLEAR
PUBLIC msg
msg = CHR(13) + CHR(13) + "Press F9 to " + ;
"restore default key definition."
ON KEY LABEL RIGHTARROW Wait Window "Right Arrow " + msg NOWAIT
ON KEY LABEL LEFTARROW Wait Window "Left Arrow " + msg NOWAIT
ON KEY LABEL UPARROW Wait Window "Up Arrow " + msg NOWAIT
ON KEY LABEL DNARROW Wait Window "Down Arrow " + msg NOWAIT

* Press F9 to clear the ON KEY LABEL assignments
ON KEY LABEL F9 ON KEY

См. также