Page 1 of 1

ON KEY F1

Posted: Mon Sep 30, 2019 8:11 am
by SALINETAS24
Hola a todos.

¿hay alguna forma de evitar que cuando se pulse la tecla F1, el sistema muestre el mensaje "no hay ayuda definida para esa tecla"?.
Yo utilizo este código que detectar la pulsación de las teclas en cualquier parte del programa para activar una calculadora residente y una agenda, y lo que me gustaría es que cuando pulse F1 ejecutara mi programa de ayuda sin mostrar el mensaje del windons....
Alguna idea..
Pd. Como ultima opción puedo usar el ON KEY F1 en cada procedimiento pero es un poco rollo.
Saludos y vamos con esa cervecita..

Code: Select all

//-----------------------------------------------------------------
//---> FUNCION PARA ACTIVA LA AGENDA Y LA CALCULADORA.
//-----------------------------------------------------------------

Function MyFuncKey ()
	
LOCAL  nHWnd:=EventHWND ()
LOCAL  nMsg:=EventMSG ()
LOCAL  nWParam:=EventWPARAM ()
LOCAL  nLParam:=EventLPARAM ()
LOCAL i := ASCAN ( _HMG_SYSDATA [3] ,  nHWnd )
LOCAL dfe2:= dFecha_hoy

	DO CASE

		CASE HMG_GetLastVirtualKeyDown () == VK_F1
			HMG_CleanLastVirtualKeyDown(); _Ayuda(cFichHelp)
		CASE HMG_GetLastVirtualKeyDown () == VK_F3
			HMG_CleanLastVirtualKeyDown(); _MAINCALC()
		CASE HMG_GetLastVirtualKeyDown () == VK_F4
			HMG_CleanLastVirtualKeyDown(); _AGENDA() 
			dFecha_hoy:=dfe2 
			Refres_Memop(2)
		CASE HMG_GetLastVirtualKeyDown () == VK_ESCAPE
			HMG_CleanLastVirtualKeyDown(); lSalPitando:=.F.
		CASE HMG_GetLastVirtualKeyDown () == VK_UP .AND. i > 0 .AND. ( _HMG_SYSDATA [1] [i] != "BROWSE" .AND. _HMG_SYSDATA [1] [i] != "TREE")
			HMG_CLEANLASTVIRTUALKEYDOWN() ; HMG_PRESSKEY(VK_SHIFT,VK_TAB)
		CASE HMG_GetLastVirtualKeyDown () == VK_DOWN .AND. i > 0 .AND. ( _HMG_SYSDATA [1] [i] != "BROWSE".AND. _HMG_SYSDATA [1] [i] != "TREE")
			HMG_CLEANLASTVIRTUALKEYDOWN() ; HMG_PRESSKEY(VK_TAB)
	ENDCASE
	

	
RETURN

Re: ON KEY F1

Posted: Mon Sep 30, 2019 12:58 pm
by dragancesu
in some definitions control exists
[ HELPID <nHelpId> ]
but nowhere how it works, in vindovs HELP is defined on the F1 key so I guess that maybe would be the solution

Re: ON KEY F1

Posted: Mon Sep 30, 2019 1:35 pm
by serge_girard
Maybe this:

Code: Select all

 ON KEY F1			ACTION nothing() 
 ...

function nothing()
return
 
Serge

Re: ON KEY F1

Posted: Mon Sep 30, 2019 9:09 pm
by SALINETAS24
Hola y gracias por contestar.
Serge, con ON KEY funciona "parcialmente". Si trabajo así tengo que poner cada vez que defino una ventana

Code: Select all

ON KEY F1 ACTION Ayuda
para que el usuario tenga acceso al fichero de ayuda. Un rollo, ya que si dentro de un procedimiento llamas a otro tienes que volver a poner el ON KEY... y así sucesivamente.

Es lo que dice el compañero Dragancesu, es un control que asigna WINDOWS a la tecla F1 y salvo que alguien sepa como apoderarse de él, lo tengo mal.
He estado mirando los fuentes de h_help pero tampoco he sacado nada en claro.
Y en lo que respecta a la función que yo utilizo para detectar la pulsación de la tecla F1, he puesto esta modificación

Code: Select all

	CASE HMG_GetLastVirtualKeyDown () == VK_F1
			msgbox("detecto"; HMG_CleanLastVirtualKeyDown(); _Ayuda(cFichHelp)
para ver si era posible detectar la pulsación de la tecla F1 antes de que se muestre el mensaje ...,PERO NO, sigue mostrando el mensaje "NO EXISTE NINGÚN TIPO DE AYUDA ASOCIADO CON ESTE ELEMENTO" , y seguidamente el proceso.

Mi intención era mostrar una ayuda que me fuese más sencilla, tipo TXT, y sobre todo usar la tecla F1.., si uso la tecla F2 .., PROBLEMA SOLUCIONADO.., pero lo dicho .. yo quiero que sea con la F1. :oops: