Página 1 de 1
KeyDown y F10
Publicado: Vie Ago 04, 2023 5:53 pm
por carloskds
no he sido capaz de interceptar las pulsaciones de teclas F2...F12
he usado el evento OnKeyDown, OnKeyUp, OnChar, del form o del control browse, pero no me los detecta, si me detecta teclas alfanuméricas sin problemas...
gracias
Re: KeyDown y F10
Publicado: Dom Ago 06, 2023 7:07 pm
por ignacio
Hola,
Funcionado sin problemas en TForm:OnKeyDown
Saludos
Re: KeyDown y F10
Publicado: Lun Ago 07, 2023 10:03 pm
por carloskds
Ignacio, en este código me funciona del f4 a f9 bien, f10 no reacciona, F11 y 12 tambien funcionan bien.
Código: Seleccionar todo
METHOD FormKeyDown( oSender, nKey, nFlags ) CLASS TFormClientC
DO CASE
CASE nKey==VK_F4
MsgInfo("Presiono F4")
CASE nKey==VK_F5
MsgInfo("Presiono F5")
CASE nKey==VK_F6
MsgInfo("Presiono F6")
CASE nKey==VK_F7
MsgInfo("Presiono F7")
CASE nKey==VK_F8
MsgInfo("Presiono F8")
CASE nKey==VK_F9
MsgInfo("Presiono F9")
CASE nKey==VK_F10
MsgInfo("Presiono F10")
CASE nKey==VK_F11
MsgInfo("Presiono F11")
CASE nKey==VK_F12
MsgInfo("Presiono F12")
ENDCASE
RETURN Nil
he hecho un pequeño modulo en harbour puro, para descartar problemas del teclado, y ahi F10 me retorna -9, obiamente bajo consola, se que en windows tendria otro codigo...
Código: Seleccionar todo
#include "Inkey.ch"
PROCEDURE Main
LOCAL nEvent
CLS
? "Waiting for events (press ESC to quit)"
SET EVENTMASK TO INKEY_ALL
DO WHILE Lastkey() <> K_ESC
nEvent := Inkey(0)
@ 0, 0 CLEAR TO 1, MaxCol()
@ 0,1 SAY "Key Code:"
?? nEvent
ENDDO
RETURN
Re: KeyDown y F10
Publicado: Lun Ago 07, 2023 10:15 pm
por carloskds
veo que en otras lib gui, tampoco me funciona el F10. asi que no es xailer. disculpa la molestia ignacio.
de momento no es importante.
Re: KeyDown y F10
Publicado: Mar Ago 08, 2023 11:38 am
por jfgimenez
Carlos,
la tecla F10 la tiene "reservada" windows para abrir el menú de la ventana, y por eso no se recibe por WM_KEYDOWN. Si necesitas capturar su pulsación tendrás que interceptar el mensaje WM_SYSCOMMAND. Algo así:
Código: Seleccionar todo
METHOD WMSysCommand( wParam, lParam ) CLASS TForm1
IF wParam == SC_KEYMENU
MsgInfo( "Se ha pulsado F10" )
RETURN 0
ENDIF
RETURN ::Super:WMSysCommand( wParam, lParam )
Re: KeyDown y F10
Publicado: Mié Ago 09, 2023 5:39 pm
por carloskds
Gracias José.
Muy claro.