Определяет выполнение команды при нажатии определенной клавиши, или комбинации клавиш, или нажатии кнопки мыши.
ON KEY [LABEL KeyLabelName] [Command] |
Параметры
- LABEL KeyLabelName
- Определяет имя соответствующей клавиши (или комбинации клавиш). Параметр KeyLabelName является символьным выражением или числом , или именем соответствующей клавиши. В следующей таблице представлен список имен некоторых специальных клавиш.
- Visual FoxPro key label assignments (системные обозначения клавиш).
Для Клавиши Значение параметра KeyLabelName LEFTARROW
RIGHTARROW
UPARROW
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 |