Hide/Show Control accelerator key

Moderator: Rathinagiri

User avatar
andyglezl
Posts: 1176
Joined: Fri Oct 26, 2012 7:58 pm
Location: Guadalajara Jalisco, MX
Has thanked: 36 times
Been thanked: 83 times
Contact:

Hide/Show Control accelerator key

Post by andyglezl » Mon Mar 23, 2015 6:05 pm

Hola
Será posible que al momento de Esconder/Mostrar un control, se Desactive/Active su tecla aceleradora ?
---------------------------------------------------------------------------------------------------------------------------
hello
Is it possible that when Hide/Show a control, were Disable/Enable your hotkey?
Andrés González López
Desde Guadalajara, Jalisco. México.

Javier Tovar
Posts: 1275
Joined: Tue Sep 03, 2013 4:22 am
Location: Tecámac, México
Has thanked: 1 time
Been thanked: 2 times

Post by Javier Tovar » Mon Mar 23, 2015 7:26 pm

Hola Andy,

Un demo por favor!

Saludos

User avatar
andyglezl
Posts: 1176
Joined: Fri Oct 26, 2012 7:58 pm
Location: Guadalajara Jalisco, MX
Has thanked: 36 times
Been thanked: 83 times
Contact:

Post by andyglezl » Mon Mar 23, 2015 9:26 pm

Hola Javier

Si se define un control, por ejemplo un BUTTON, cuando oprimimos "ALT-G" se ejecuta lo que tenga en ACTION
-----------------------------------------------------------------------------------------------------------------------------------
If a control, for example a defined BUTTON when we press "ALT-G" runs whatever is on ACTION

Code: Select all

			@ 505,037 BUTTON BTTN_GdaConf CAPTION '&Guardar' WIDTH 100 HEIGHT 25 FONT "Verdana" SIZE 10
					ACTION MSGINFO( "Configuración Guardada", "AVISO" )
La pregunta es: Como deshabilito el "ALT-G" si yo pongo HIDE el control "Form_2.BTTN_GdaConf.Hide", ya que aun estando HIDE se sigue ejecutando.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
The question is: How do I disable the "ALT-G" if I put HIDE the "Form_2.BTTN_GdaConf.Hide" control because even when HIDE is still running.

Quizá el mismo control "debería" hacer esta función internamente. (Por eso lo puse en "WhishList")
---------------------------------------------------------------------------------------------------------------------
Perhaps the same control "should" do this function internally. (That's why I put it in "whishlist")
Andrés González López
Desde Guadalajara, Jalisco. México.

User avatar
andyglezl
Posts: 1176
Joined: Fri Oct 26, 2012 7:58 pm
Location: Guadalajara Jalisco, MX
Has thanked: 36 times
Been thanked: 83 times
Contact:

Post by andyglezl » Mon Mar 23, 2015 10:49 pm

Me contesto yo mismo...
------------------------------
I answered myself ...

Cuando muestro el control: / When I show control:

Form_2.BTTN_GdaConf.Caption := "&Guardar" // le pongo el "&" // I put the "&"

Cuando lo escondo: / When I hide:

Form_2.BTTN_GdaConf.Caption := "Guardar" // le quito el "&" // I remove the "&"
Andrés González López
Desde Guadalajara, Jalisco. México.

User avatar
Pablo César
Posts: 4059
Joined: Wed Sep 08, 2010 1:18 pm
Location: Curitiba - Brasil
Has thanked: 100 times
Been thanked: 182 times

Post by Pablo César » Tue Mar 24, 2015 1:24 am

Hola Andrés,

Fijate si es esto lo que vos precisás:

Code: Select all

#include <hmg.ch>

Function Main()
DEFINE WINDOW FORM_1 AT 138 , 235 WIDTH 550 HEIGHT 350 MAIN

    @ 050, 037 BUTTON BTTN_GdaConf CAPTION '&Guardar' ACTION (MSGINFO("Configuración Guardada","AVISO"),Remueve())

    @ 100, 037 BUTTON Button_1 CAPTION "Aparecer" ACTION Pone()
END WINDOW
CENTER WINDOW Form_1
ACTIVATE WINDOW Form_1
Return Nil

Function Pone()
Local i := GetControlIndex ( "BTTN_GdaConf", "Form_1" )
Local bAction := _HMG_SYSDATA [  6 ] [i]
Local cCaption := _HMG_SYSDATA [ 33 ] [i]
Local x := HB_UAT ( '&' , cCaption )
Local c := ASC ( HB_USUBSTR ( cCaption , x+1 , 1 ) )

_DefineHotKey ( "Form_1", MOD_ALT, c, bAction )
Form_1.BTTN_GdaConf.Show
Return Nil

Function Remueve()
Local i := GetControlIndex ( "BTTN_GdaConf", "Form_1" )
Local cCaption := _HMG_SYSDATA [ 33 ] [i]
Local x := HB_UAT ( '&' , cCaption )
Local c := ASC ( HB_USUBSTR ( cCaption , x+1 , 1 ) )

_DefineHotKey ( "Form_1", MOD_ALT, c, {|| Nil} )
Form_1.BTTN_GdaConf.Hide
Return Nil
Colocar Image nada más es que una instruccion para activar el HotKey conforme la letra designada.
Slds
HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein

User avatar
andyglezl
Posts: 1176
Joined: Fri Oct 26, 2012 7:58 pm
Location: Guadalajara Jalisco, MX
Has thanked: 36 times
Been thanked: 83 times
Contact:

Post by andyglezl » Tue Mar 24, 2015 4:59 am

Hola Pablo Cesar

gracias por contestar, es parecido solo que yo lo hice así...

Code: Select all

#include <hmg.ch>

Function Main()
	LOCAL lHide := .T.
	DEFINE WINDOW FORM_1 AT 0,0 WIDTH 500 HEIGHT 300 MAIN TITLE "Oprime ALT-G ó ALT-E"

		@ 090,010 BUTTON Button_1 OF FORM_1 CAPTION "Mostrar/Ocultar" ACTION lHide := ShowHide( lHide )
		@ 050,200 BUTTON Button_2 OF FORM_1 CAPTION '&Guardar' ACTION MSGINFO("Configuración Guardada","AVISO")
	    @ 100,200 BUTTON Button_3 OF FORM_1 CAPTION '&Enviar'  ACTION MSGINFO("Enviado...","AVISO")
	
	END WINDOW
	CENTER WINDOW Form_1
	ACTIVATE WINDOW Form_1
Return Nil
FUNCTION ShowHide( lHide )

	If lHide
		FORM_1.Button_2.Hide
		FORM_1.Button_2.Caption := 'Guardar'		// Quito el "&"
		FORM_1.Button_3.Hide
		FORM_1.Button_3.Caption := 'Enviar'			// Quito el "&"
		MSGINFO( "Cuando oculto los 2 botones, desactivo el Hotkey de ambos"+HB_OsNewLine() +  ;
				 "ya no hace nada ALT-G ni ALT-E" )
	ELSE
		FORM_1.Button_2.Show
		FORM_1.Button_2.Caption := '&Guardar'		// Pongo el "&"
		FORM_1.Button_3.Show
		FORM_1.Button_3.Caption := '&Enviar'		// Pongo el "&"
		MSGINFO( "Cuando muestro los 2 botones, activo de nuevo el Hotkey de ambos"+HB_OsNewLine()  +  ;
				 "ya funcionan ALT-G y ALT-E" )
	ENDIF
	
RETURN( ! lHide )
Como le menciono a Javier, lo ideal sería que el mismo control "supiera" que cuando esta en modo HIDE, debería
deshabilitar el hotkey y activarlo de nuevo cuando esta en SHOW...
Andrés González López
Desde Guadalajara, Jalisco. México.

User avatar
Pablo César
Posts: 4059
Joined: Wed Sep 08, 2010 1:18 pm
Location: Curitiba - Brasil
Has thanked: 100 times
Been thanked: 182 times

Post by Pablo César » Tue Mar 24, 2015 11:43 am

andyglezl wrote:lo ideal sería que el mismo control "supiera" que cuando esta en modo HIDE, debería
deshabilitar el hotkey y activarlo de nuevo cuando esta en SHOW...
Ahhh si entendi.

Disculpame pensé que no estabas consiguiendo desactivar el hotkey del botón. Por eso tu tópico lo movi a esta seccion, entonces si te parece que tu tópico todavia merece tu colocación o deseo para alteracion de código de la biblioteca, lo moveré de vuelta. Decimelo, por favor.

Aunque en mi opinion, esto es algo personal, no un comportamiento normal. Porque si llevas en cuenta, el control mismo que ocultado, todavia existe. Creo que en algunas circunstancias, el hotkey puede servir como un escape o como una función oculta a los usuários para algunos casos. Por lo tanto, si existe una forma de desabilitarlo via programacion, creo que no seria necesário dejarlo con comportamiento fijo. No sé, esa es mi opinion.
HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein

User avatar
danielmaximiliano
Posts: 2161
Joined: Fri Apr 09, 2010 4:53 pm
Location: Argentina
Has thanked: 172 times
Been thanked: 26 times
Contact:

Post by danielmaximiliano » Tue Mar 24, 2015 12:26 pm

andyglezl wrote: lo ideal sería que el mismo control "supiera" que cuando esta en modo HIDE, debería
deshabilitar el hotkey y activarlo de nuevo cuando esta en SHOW...
Hola a todos :

Creo que en VFP al crear un Control el mismo tiene la propiedad HOTKEY, este al ocultarse esa propiedad deja de funcionar.

Translate Google


Hello everyone:

I think in VFP to create a Controlit has the property HOTKEY , this to hide that property goes down.
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`.HMG : It's magic !
(¸.·``··*

Saludos / Regards
DaNiElMaXiMiLiAnO

Whatsapp. : +54901169026142
Telegram Name : DaNiElMaXiMiLiAnO

User avatar
esgici
Posts: 4517
Joined: Wed Jul 30, 2008 9:17 pm
DBs Used: DBF
Location: iskenderun / Turkiye
Has thanked: 391 times
Been thanked: 111 times
Contact:

Post by esgici » Tue Mar 24, 2015 1:22 pm

danielmaximiliano wrote: I think in VFP to create a Control it has the property HOTKEY , this to hide that property goes down.
IMO: "Hidden" not means "not exist"; although control is invisible, hot key should be active. So, this behavior of VFP isn't correct.

For des-activate hot (accelerator) key (with or without "hide") of a control, needs use "Disable" ( Enable := .F. ) or "Release" method.

Viva HMG :D
Viva INTERNATIONAL HMG :D

User avatar
Pablo César
Posts: 4059
Joined: Wed Sep 08, 2010 1:18 pm
Location: Curitiba - Brasil
Has thanked: 100 times
Been thanked: 182 times

Post by Pablo César » Tue Mar 24, 2015 1:25 pm

danielmaximiliano wrote:Creo que en VFP al crear un Control el mismo tiene la propiedad HOTKEY, este al ocultarse esa propiedad deja de funcionar.
This is a good discussion of Hides a control and additionally want to prevent a control's shortcut key (underlined letter) from working.

Here I've found following discusing at MSDN forum:
http://blogs.msdn.com/b/oldnewthing/arc ... 68490.aspx

They have mentioned some cases where caption (labels) are not needing and what to do in this cases ?

By all my understanding, is we do not need to prevent a control's shortcut key always or by default when control is being hiden. Because we can distroy control or we can let shortcut leave without effect by re-defining HotKey. But this is personal, probably some more could give others examples or other needs
HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein

Post Reply