Important Notice
The pages on this site contain documentation for very old MS-DOS software,
purely for historical purposes.
If you're looking for up-to-date documentation, particularly for programming,
you should not rely on the information found here, as it will be woefully
out of date.
ON KEY Statement Details
◄Summary► ◄Details► ◄Example► ◄Contents► ◄Index► ◄Back►
──────────────────────────────────────────────────────────────────────────────
ON KEY(n%) GOSUB {linenumber | linelabel}
Usage Notes
■ Use the KeyDown, KeyPress, and KeyUp events to handle keyboard input
with forms. ON KEY will not work when forms are showing.
See: ◄KeyDown Event► ◄KeyPress Event► ◄KeyUp Event►
■ To use the ON KEY statement with forms, you must first unload or hide
any visible forms. See: ◄HIDE Method► ◄UNLOAD Statement►
■ If your program contains event-handling statements and you are compiling
from the BC command line, use the /W or /V option. If you do not use
these options and your program contains event traps, Visual Basic
generates the error message, "ON event without /V or /W on command
line." See: ◄BC Command-Line Options►
■ The RETURN linenumber or RETURN linelabel forms of RETURN can be used
to return to a specific line from a trapping routine. However, any
GOSUB, WHILE, or FOR statements active at the time of the trap remain
active. Visual Basic may generate error messages such as "NEXT without
FOR."
■ Keys are processed in the following order:
• The line printer's echo-toggle key is processed.
Defining this key as a user-defined key trap does not prevent
characters from being echoed to the line printer when pressed.
• Function keys and the arrow keys are examined.
Defining a function key or arrow key as a user-defined key trap has
no effect because these keys are predefined.
• The user-defined keys are examined.
■ The ON KEY statement can trap any key, including Break or System Reset
(Ctrl+Alt+Del). This makes it possible to prevent accidentally breaking
out of a program or rebooting the machine.
■ The ON KEY statement specifies only the start of an event-trapping
routine. The KEY statement determines whether the routine is called
and how events are handled when trapping is off. See: ◄KEY Statement►
■ If an event occurs in a procedure, a RETURN linenumber or RETURN
linelabel statement cannot get back into the procedure, because the
line number or label must be in the module-level code.
■ After a key is trapped, the information specifying which key was
trapped is no longer available. This means that you cannot subsequently
use an INPUT statement or INKEY$ function to find out which key caused
the trap. Because you do not know which keypress caused the trap,
you must create a different event-handling routine for each key you
want to trap.