PDA

Ver la Versión Completa : Problemas con la tecla F1


Miguel45
23-03-2007, 14:21:01
Hola compañeros,
Antes de decidirme a preguntar, he indagado por el foro y no he encontrado solución alguna al problema que voy a plantear. Es un tanto curioso y la primera vez que lo veo.
Primero deciros que trabajo con delphi 5 e Interbase.
En algunos formularios, cuando quiero usar la tecla F1, no se que ocurre pero no funciona.
Pongo puntos de ruptura en los eventos OnKeyDown y OnKeyPress para poder ver lo que pasa, pero el programa ni siquiera se para, es como si no estuviera pulsando dicha tecla. Sin embargo, cualquier otra tecla sí funciona, sí que se detiene el programa en el punto de ruptura establecido.
Por Ejemplo, dentro del evento OnKeyDown de un TEdit pongo el codigo:
Código Delphi [-] (http://www.clubdelphi.com/foros/#)case key of 112: begin // aquí pongo el código que quiero al pulsar F1 end; 113: begin // aquí pongo el código que quiero al pulsar F2 end; end;


Si pulso la tecla F1 es como si no pulsase nada, en cambio si pulso F2 sí que funciona bien.

Agradecería cualquier solución o cementario al respecto.
Un saludo.

Miguel.

Zeta
23-03-2007, 15:05:47
Parece que fuera tu tecla F1 porque el código funciona bien.
Código Delphi [-] (http://www.clubdelphi.com/foros/#)case key of 112: begin showmessage('presioné F1'); end; 113: begin showmessage('presioné F2'); end; end;


Probá ir al escritorio de Windows, y presionar F1, si se te abre el "Centro de ayuda y Soporte técnico" en WXP o la ayuda en W98 la tecla funciona.

Cuando dices:

En algunos formularios, cuando quiero usar la tecla F1, no se que ocurre pero no funciona.
Si es sobre el formulario tienes que poner el evento "Key Preview" del formulario en True.

Saludos

Lepe
23-03-2007, 16:13:13
Organización :D:

- KeyPreview del Formulario a True
- Usar el OnkeyDown del Form, no confundir con el Onkeydown del TEdit.
- Usar las constantes de delphi para las teclas: vk_F1, vk_return, vk_F2, etc (busca por virtual keycodes en la ayuda)

Como sustitución a esos métodos, puedes usar el ActionList y activar su ShortCut, se centraliza las pulsaciones de teclas.

Saludos

Miguel45
23-03-2007, 17:21:57
Gracias por responder.
Ante todo decir que el teclado funciona perfectamente.
Dentro del mismo proyecto, hay algunos formularios que cuando quiero programar un evento para la tecla de función F1 (por ejemplo, siempre uso F1 para llamar a pantallas de búsquedas de clientes, proveedores, artículos,...), delphi no responde a la pulsación de esta tecla, sin embargo sí que responde a las demás.
Lo he probado en varios formularios, con la opción OnKeyPress del form a True, modificacando el estilo del form, en la propiedad OnKeyPress y OnKeyDown de controles TEdid, TDBGrid,...
Si embargo, en la mayoría de forms funciona todo a la perfección.
En fin, voy a seguir indagando.
Un saludo.

dec
23-03-2007, 18:05:42
Hola,

La tecla F1 es la que en Windows suele utilizarse para llamar a la "ayuda" de un programa, sea esta contextual o no. Pero, bueno, nada impide utilizarla para otro menester, salvo que puedas confundir a un usuario que busque ayuda y se encuentre con otra cosa.

Pero lo que quería decir es que es raro lo que dices y lo único que se me ocurre a bote pronto es que algo esté capturando la tecla F1. Algo en tu aplicación, como pueda ser algún componente... pero sin duda es extraño que no funcione algo como lo que dices.

No sé si tenga que ver, pero, por ejemplo, hay veces que quieres que se cierre un formulario cuando el usuario pulsa la tecla "Escape". Pues bien, si en el formulario hay un "TMemo", por ejemplo, y el mismo tiene el foco del usuario... "la tecla Escape" se queda en el "TMemo" y no se cierra el formulario... como no sea que captures también dicha tecla en el propio "TMemo".

Tal vez está ocurriéndote algo parecido y más teniendo en cuenta que dices que encuentras el problema en algunos formularios pero no en otros. Tal vez los formularios problemáticos cuentan con algún componente que está capturando la tecla F1... echa un vistazo a ver qué componentes hay en el formulario "problemático" que no existen en los formularios que "responden" a la tecla F1 tal como esperas.