Utilizar teclas de funciones

1,520 views
Skip to first unread message

calichy

unread,
Sep 4, 2010, 8:29:32 PM9/4/10
to Comunidad de Visual Foxpro en Español
Amigos Foxeros alguien me podria decir como hacer para utlizar teclas
de funcione en foxpro como F1, F2 , F3.....F12?

Walter R. Ojeda Valiente

unread,
Sep 4, 2010, 8:54:54 PM9/4/10
to publice...@googlegroups.com
Hola Calichy

La forma de programarlas es con el comando ON KEY LABEL. Con ese comando no solamente puedes programar las teclas de función sino todas las demás teclas y el mouse también.

Ejemplos:

ON KEY LABEL F2 do MAIN

ON KEY LABEL F3 WAIT WINDOW "Bueno, bueno, veo que has presionado la tecla F3"

ON KEY LABEL ALT+M WAIT WINDOW "Este es mi mensaje que aparece cada vez que alguien presiona las teclas ALT y M al mismo tiempo"

ON KEY LABEL RIGHTARROW WAIT WINDOW "Presionaste la flecha derecha"

Busca la ayuda de ON KEY LABEL para más información.

Saludos.

Walter.

Arturo Zamudio

unread,
Sep 4, 2010, 8:55:06 PM9/4/10
to publice...@googlegroups.com
fijate en la ayuda en el evento keypress

calichy

unread,
Sep 4, 2010, 10:05:10 PM9/4/10
to Comunidad de Visual Foxpro en Español
Gracias amigos por su aportacion ya estoy probando lo que me comenta
nuestro amigo Walter les agradeco mucho.

panchimancuso

unread,
Sep 5, 2010, 12:21:32 AM9/5/10
to Comunidad de Visual Foxpro en Español
fijate en la ayuda de fox el comando ON KEY LABEL , ten en cuenta que
cuando salgas del formulario en el evento unload
debes desprogramarlas a las techas con por ejemplo ON KEY LABEL F3
solamente, sino te seguiran programadas las teclas en los demas forms
del sistema.
saludos desde santa fe, argentina.
> > Walter.- Ocultar texto de la cita -
>
> - Mostrar texto de la cita -

Daniel Sánchez

unread,
Sep 5, 2010, 11:01:38 AM9/5/10
to publice...@googlegroups.com
Te comento un dato adicional a lo ya explicado por los compañeros, el usar on key labels te permite disparar tu procedimiento desde cualquier formulario, pero si deseas que sea solo para un formulario o formularios determinados dicha función tendrías que indicar en la propiedad keypreview de tu form a .t. y así capturas la tecla presionada cuando tu form tiene el foco con el evento keypress, ahí puedes poner un wait window con los parámetros nKeyCode, nShiftAltCtrl para que averigües los valores de las teclas presionadas y con eso puedes usar un if o do case para de acuerdo al valor de la tecla realizar la acción requerida. Por decir quieres que imprima tu formulario activo, podrías tener múltiples formularios en pantalla, pero al presionar ctrl+p se active el reporte del form activo, y no de los otros form que pueden estar sin el foco.


--
Daniel Sánchez Escobar
Investigación y Desarrollo
Reset Software & Sistemas
Móvil 044-949398047
Trujillo - Perú

Carlos Miguel FARIAS

unread,
Sep 5, 2010, 5:53:37 PM9/5/10
to publice...@googlegroups.com
No se si lo indicaron pero hay que tener en cuenta que...
a) cuando se activa la captura de eventos de teclado con ON KEY LABEL, este permanece activo hasta que se anula o hasta que se manda a la pila de key (que manejamos con popkey y pushkey).
b) Si se pasa a otro formulario, los on key siguen activos (de ahi la buena opción sugerida de manejarlo con el keypress del formulario, activando keypreview).
c) Si queremos seguir usando ON KEY LABEL, conviene colocar la activación en el metodo activate del formulario, y eliminarlas en el metodo deactivate, de esa manera funciona solo para el formulario indicado.
d) en el activate, tambien antes de activar las teclas propias conviene hacer un push key, para guardar las asignaciones vigentes y ...
e) el desactivate poner un pop key para recuperar las que se "guardaron" al activar.
Esto es lo que haciamos en el fox dos, cuando no habia keypress

calichy

unread,
Sep 5, 2010, 9:31:06 PM9/5/10
to Comunidad de Visual Foxpro en Español
Gracias amigo Moises exelente forma en que lo manejas ya me salio
gracias

On 4 sep, 23:37, Moises Daniel Vilchez Tello <mvilch...@gmail.com>
wrote:
> asi es amigo carlos Salas, la forma mas eficiente de trabajar con las teclas
> seria con el on key label mas o menos asi:
>
> ON KEY LABEL INS _screen.activeform.nuevo()
> ON KEY LABEL DEL _screen.activeform.eliminar()
>  ON KEY LABEL DEL _screen.activeform.modificar()
> ON KEY LABEL F2 _screen.activeform.ord_codigo()  && Ordena x codigo
> ON KEY LABEL F4 _screen.activeform.ord_detalle()  && Ordena x Detalle
>
> ojo, los cargas al iniciar tu formulario en el init, y tienes q descargarlos
> al salir
> unload o destroy de esta manera
>
> ON KEY LABEL INS
> ON KEY LABEL DEL
> ON KEY LABEL ENTER
> ON KEY LABEL F2
> ON KEY LABEL F4
>
> espero te sirva, saludos

ibania blanco

unread,
Sep 14, 2010, 4:51:10 PM9/14/10
to Comunidad de Visual Foxpro en Español
este ejemplo sencillo lo colocas en form1 keypress y tenes que
modifcar la propiedad keypreview a .t., para que pueda ejecutar estos
comandos, si no te ignora
IF nKeyCode=28 Then && f1 guardar
If MessageBox ('¿Desea Guardar los Cambios?',4+32,'')=6
=TableUpdate(.T.)
Else
=TableRevert(.T.)
EndIf
thisform.release
endif

IF nKeyCode=-1 Then && f2 cancelar
thisform.Release
ENDIF

miltonvas

unread,
Sep 17, 2010, 12:00:35 PM9/17/10
to Comunidad de Visual Foxpro en Español
yo normalmente
las teclas f12al f10 las conttrol en negativo
do case
case nkeycode=-1 &&f2
case nkeycode=-2 &&f3
....
case nkeycode=-9 &&f10

endcase

Jaime Bagua González

unread,
Feb 9, 2015, 4:57:58 PM2/9/15
to publice...@googlegroups.com
Sabes como codificar en un programa con extension .fxp como uso el on key label para desactivar las teclas alt+f4? xfa ayuda

HernanCano

unread,
Feb 9, 2015, 11:22:19 PM2/9/15
to publice...@googlegroups.com
Jaime:
Tal vez no fue adrede, pero tu pregunta se juntó con otra que estaba "abierta" por otro colega desde el 2010.

De todas formas en el comentario "original" (es decir del año 2010) del colega MVilchez, está la respuesta a tu pregunta.

Tip: en el ON KEY LABEL de la tecla F4 pónlo a ejecutar un wait window, o un set message, o un MessageBox.......

Moises Daniel Vilchez Tello

unread,
Sep 5, 2010, 12:37:15 AM9/5/10
to publice...@googlegroups.com
Reply all
Reply to author
Forward
0 new messages