Buenas, se puede añadir una HotKey a una opción de un menú construido ya
con MENUITEM o XA_MenuItem()
Muchas gracias.
In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
HotKey en menús
-
- Mensajes: 1310
- Registrado: Mié Sep 26, 2007 7:12 pm
HotKey en menús
Bingen,
> Buenas, se puede añadir una HotKey a una opción de un menú construido ya
> con MENUITEM o XA_MenuItem()
Hay 2 cosas: la hotkey que aparece en el texto del menú a la derecha y el
procesamiento de la tecla en sí.
Para el texto sólo tienes que usar un caracter de tabulación ( chr(9) o
TAB ) entre el texto y el hotkey. P.ej.:
"Salir" + Chr( 9 ) + "Alt+F4"
"Salir" + TAB + "Alt+F4"
e"SalirtAlt+F4"
La última línea tiene una letra e antes de las comillas, y es tratada por
xHarbour como una cadena extendida, es decir, que tiene que expandir las
secuencias X. En este caso, t es el caracter de tabulación.
Para el procesamiento de la tecla, tendrás que usar el evento OnKeyDown del
formulario.
--
Un saludo,
José F. Giménez
> Buenas, se puede añadir una HotKey a una opción de un menú construido ya
> con MENUITEM o XA_MenuItem()
Hay 2 cosas: la hotkey que aparece en el texto del menú a la derecha y el
procesamiento de la tecla en sí.
Para el texto sólo tienes que usar un caracter de tabulación ( chr(9) o
TAB ) entre el texto y el hotkey. P.ej.:
"Salir" + Chr( 9 ) + "Alt+F4"
"Salir" + TAB + "Alt+F4"
e"SalirtAlt+F4"
La última línea tiene una letra e antes de las comillas, y es tratada por
xHarbour como una cadena extendida, es decir, que tiene que expandir las
secuencias X. En este caso, t es el caracter de tabulación.
Para el procesamiento de la tecla, tendrás que usar el evento OnKeyDown del
formulario.
--
Un saludo,
José F. Giménez
-
- Mensajes: 1310
- Registrado: Mié Sep 26, 2007 7:12 pm
HotKey en menús
El texto lo tenia ya con CHR(9) en cuanto a lo segundo no se me había
ocurrido usar el evento OnKeyDown del formulario pensando que era el
objeto oMenu o oMenuitem los que deberían de tener esa posibilidad.
Muchas gracias.
ocurrido usar el evento OnKeyDown del formulario pensando que era el
objeto oMenu o oMenuitem los que deberían de tener esa posibilidad.
Muchas gracias.
-
- Mensajes: 1310
- Registrado: Mié Sep 26, 2007 7:12 pm
HotKey en menús
Programando el evento OnKeyDown del formulario he cogido de un ejemplo
de Xailer el código para detectar si esta pulsado Ctrl
If lAnd( GetKeyState( VK_CONTROL ), 0x80 )
Como hago para saber si esta pulsada Shift o Alt ??
Salu2 y gracias
de Xailer el código para detectar si esta pulsado Ctrl
If lAnd( GetKeyState( VK_CONTROL ), 0x80 )
Como hago para saber si esta pulsada Shift o Alt ??
Salu2 y gracias
HotKey en menús
Bingen,
> Programando el evento OnKeyDown del formulario he cogido de un ejemplo de
> Xailer el código para detectar si esta pulsado Ctrl
>
> If lAnd( GetKeyState( VK_CONTROL ), 0x80 )
>
> Como hago para saber si esta pulsada Shift o Alt ??
Te aconsejo que utilices la función lGetKeyState() en vez de GetKeyState();
es más cómoda de usar.
IF lGetKeyState( VK_SHIFT )
IF lGetKeyState( VK_CONTROL )
IF lGetKeyState( VK_MENU )
Con respecto a VK_MENU (tecla Alt), tienes que tener en cuenta que las
combinaciones de tecla Alt+? son shortcuts, y por lo tanto no se reciben en
OnKeyDown, sino en OnSysKeyDown. Además, algunas de esas combinaciones
pueden no llegarte nunca, debido a que existan como shortcuts en el menú o
en algún control del formulario.
--
Un saludo,
José F. Giménez
> Programando el evento OnKeyDown del formulario he cogido de un ejemplo de
> Xailer el código para detectar si esta pulsado Ctrl
>
> If lAnd( GetKeyState( VK_CONTROL ), 0x80 )
>
> Como hago para saber si esta pulsada Shift o Alt ??
Te aconsejo que utilices la función lGetKeyState() en vez de GetKeyState();
es más cómoda de usar.
IF lGetKeyState( VK_SHIFT )
IF lGetKeyState( VK_CONTROL )
IF lGetKeyState( VK_MENU )
Con respecto a VK_MENU (tecla Alt), tienes que tener en cuenta que las
combinaciones de tecla Alt+? son shortcuts, y por lo tanto no se reciben en
OnKeyDown, sino en OnSysKeyDown. Además, algunas de esas combinaciones
pueden no llegarte nunca, debido a que existan como shortcuts en el menú o
en algún control del formulario.
--
Un saludo,
José F. Giménez
-
- Mensajes: 1310
- Registrado: Mié Sep 26, 2007 7:12 pm
HotKey en menús
Muchas gracias Jose OnKeyDown perfecto con Ctrl y Shift.
OnSysKeyDown con ALT no va ni a tiros pero paso por que ya me dio
problemas con FW por las combinaciones del sistema como tu dices.
Gracias y salu2.
OnSysKeyDown con ALT no va ni a tiros pero paso por que ya me dio
problemas con FW por las combinaciones del sistema como tu dices.
Gracias y salu2.