Cómo utilizar un evento KeyPress en lugar de en la etiqueta de la clave


Resumen


Muchos desarrolladores utilizan ON KEY LABEL para asignar programas o procedimientos en los programas que se ejecutan al presionar una tecla concreta (normalmente una tecla de función). Sin embargo, si la asignación de ON KEY LABEL va a ser específica de un control en un formulario, una alternativa mejor sería utilizar el evento KeyPress de dicho control.

Más información


El evento KeyPress está disponible para los siguientes controles de formulario:
CheckBox, ComboBox, CommandButton, EditBox, formulario, ListBox, OptionButton, Spinner, TextBox
Es posible utilizar este evento para comprobar la pulsación de tecla específica. Cuando se utiliza el evento KeyPress para realizar una acción basada en una tecla de función, debe utilizarse el valor de la tecla función como se muestra en esta tabla:


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
Para obtener más información sobre los valores de clave, consulte la función INKEY() en el archivo de Ayuda de Visual FoxPro.

Ejemplo paso a paso

Los pasos siguientes muestran cómo utilizar el evento KeyPress.


  1. Cree un formulario y coloque un cuadro de texto en él.
  2. En la propiedad OrigenDelControl (ControlSource) del cuadro de texto, teclee miclave (o cualquier otra variable que desee).
  3. Coloque el código siguiente en el evento KeyPress del cuadro de texto:
       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
  4. Coloque el código siguiente en el evento Load del formulario:
       CLEAR MACROS
    SET HELP OFF
    *: This will disable FoxPro's default function key assignments.
  5. Coloque el código siguiente en el evento Destroy del formulario:
       RESTORE MACROS
    SET HELP ON
    *: This will restore FoxPro's default function key assignments.
  6. Coloque un botón de comando en el formulario y coloque el código siguiente en su evento click:
       ThisForm.Release
  7. Guarde y ejecute el formulario. Si se presiona la tecla F1 o F5, deben aparecer los mensajes de ventana de espera adecuados y se debe actualizar el cuadro de texto.