Page 1 of 2
Hide/Show Control accelerator key
Posted: Mon Mar 23, 2015 6:05 pm
by andyglezl
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?
Re: Hide/Show Control accelerator key
Posted: Mon Mar 23, 2015 7:26 pm
by Javier Tovar
Hola Andy,
Un demo por favor!
Saludos
Re: Hide/Show Control accelerator key
Posted: Mon Mar 23, 2015 9:26 pm
by andyglezl
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")
Re: Hide/Show Control accelerator key
Posted: Mon Mar 23, 2015 10:49 pm
by andyglezl
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 "&"
Hide/Show Control accelerator key
Posted: Tue Mar 24, 2015 1:24 am
by Pablo César
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

nada más es que una instruccion para activar el HotKey conforme la letra designada.
Slds
Re: Hide/Show Control accelerator key
Posted: Tue Mar 24, 2015 4:59 am
by andyglezl
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...
Hide/Show Control accelerator key
Posted: Tue Mar 24, 2015 11:43 am
by Pablo César
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.
Re: Hide/Show Control accelerator key
Posted: Tue Mar 24, 2015 12:26 pm
by danielmaximiliano
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.
Re: Hide/Show Control accelerator key
Posted: Tue Mar 24, 2015 1:22 pm
by esgici
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

Hide/Show Control accelerator key
Posted: Tue Mar 24, 2015 1:25 pm
by Pablo César
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:
https://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