La Web del Programador: Comunidad de Programadores
 
    Pregunta:  418 - CONTROLAR LAS TECLAS DE FUNCION
Autor:  Julio Garcia
Como puedo desde Fox Pro 2.5 ( para MS DOS ) controlar las teclas de función, es decir, saber si pulsa F1, F2, etc...
He de activar/desactivar algún set?

  Respuesta:  Foxito
Lo mejor es crear un procedimiento (teclas.prg) invocado por las teclas de funcion (f1...f12), programandolas con ON KEY LABEL F2 DO TECLAS
Este procedimiento debe usar la funcion LASTKEY() para averiguar la tecla pulsada. Luego la validas para que realice lo que quieras.

  Respuesta:  Javier Prieto
Si querés capturar las teclas de función una vez presionandas tenés varios métodos:

Función LASTKEY()
Devuelve el valor de la tecla presionada

Modo de Uso:

Tecla=LastKey()

Los valores que nos interesan son los siguientes:
Tecla Sola May. 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 136 137 139
F12 134 136 138 140

Otra forma de capturar la entrada de estas teclas, es por ejemplo cuando deseo que presionando cierta tecla se ejecute un comando.
Para hacer esto se debe colocar al principio del programa y luego de los pararámetros, si es que los hubiera, lo siguiente:
ON KEY LABEL nombre_tecla comando

donde,nombre_tecla puede ser
F1, F2, F3 ...
Ctrl+F1, Ctrl+F2 ...
Shift+F1, Shift+F2 ...
Alt+F1, Alt+F2, Alt+F3

Cabe recordar, que no hay que ponerlo entre comillas, y el comando, es el comando a ejecutar.

Otra oción que tenés es estar a la espera que se presione una deteminada tecla, en este caso la función a utilizar es INKEY(), a la cual le debes pasar como parámetro la cantidad de segundos que debe esperar. Si le pasas 0, espera indefinidamente.
El valor que devuelve es el mismo que LASTKEY().


  Respuesta:  Foxito
Hola.. soy de Perú.

Sabes... algo sencillo de hacer...

On Key Label F1 Do Prog01
On Key Label F2 Do Prog02
On key Label F10 ??Chr(7) && Si No Quieres Programarla
On Key Label F11 Wait Wind NoWait "Tecla No Programada"
On Key Label F12 &&Desprograma la tecla
Bye!