Many developers use ON KEY LABEL to assign programs or procedures within programs that are to be executed upon pressing a specific key (usually a function key). However, if the ON KEY LABEL assignment is to be specific to a control within a form, a better alternative would be to use the KeyPress event of that control.
The KeyPress event is available for the following form controls:
CheckBox, ComboBox, CommandButton, EditBox, Form, ListBox, OptionButton, Spinner, TextBoxIt is possible to use this event to check for the press of a specific key. When using the KeyPress event to perform an action based on a function key, the function key's value should be used as shown in this table:
Key Alone Shift Ctrl Alt
F1 28 84 94 104
F2 -1 85 95 105
F3 -2 86 96 106
F4 -3 87 97 107
F5 -4 88 98 108
F6 -5 89 99 109
F7 -6 90 100 110
F8 -7 91 101 111
F9 -8 92 102 112
F10 -9 93 103 113
F11 133 135 137 139
F12 134 136 138 140
For more information on key values, refer to the INKEY() function in Visual FoxPro Help file.
Step-by-Step ExampleThe following steps show how to use the KeyPress event.
- Create a form, and place a text box on it.
- In the ControlSource property of the text box, type mykey (or any other variable that you might prefer).
- Place the following code in the KeyPress event of the text box:
LPARAMETERS nKeyCode, nShiftAltCtrl
*: The previous line of code is already contained in the KeyPress event
*: by default.
CASE nKeyCode = 28
WAIT WINDOW "The F1 Key has been pressed" NOWAIT
mykey = "F1 Key"
CASE nKeyCode = -4
WAIT WINDOW "The F5 Key has been pressed" NOWAIT
mykey = "F5 Key"
- Place the following code in the Load event of the form:
SET HELP OFF
*: This will disable FoxPro's default function key assignments.
- Place the following code in the Destroy event of the form:
SET HELP ON
*: This will restore FoxPro's default function key assignments.
- Place a command button on the form, and place the following code in its click event:
- Save and run the form. If either the F1 or F5 key is pressed, the appropriate WAIT WINDOW messages should appear, and the text box should be updated.