Use a KeyPress Event for form controls
This article describes how to use KeyPress Event for form controls.
Original product version: Visual FoxPro
Original KB number: 140296
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, TextBox
It 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, see the
INKEY() function in Visual FoxPro Help file.
The following steps show how to use the KeyPress event.
Create a form, and place a text box on it.
ControlSourceproperty 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. DO CASE CASE nKeyCode = 28 WAIT WINDOW "The F1 Key has been pressed" NOWAIT mykey = "F1 Key" ThisForm.Refresh CASE nKeyCode = -4 WAIT WINDOW "The F5 Key has been pressed" NOWAIT mykey = "F5 Key" ThisForm.Refresh ENDCASE
Place the following code in the Load event of the form:
CLEAR MACROS SET HELP OFF *: This will disable FoxPro's default function key assignments.
Place the following code in the Destroy event of the form:
RESTORE MACROS 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.