Página 1 de 1
HotKey en menús
Publicado: Mar Mar 28, 2006 5:08 pm
por Bingen Ugaldebere
Buenas, se puede añadir una HotKey a una opción de un menú construido ya
con MENUITEM o XA_MenuItem()
Muchas gracias.
HotKey en menús
Publicado: Mar Mar 28, 2006 9:20 pm
por jfgimenez
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
HotKey en menús
Publicado: Mié Mar 29, 2006 12:47 pm
por Bingen Ugaldebere
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.
HotKey en menús
Publicado: Mié Mar 29, 2006 4:51 pm
por Bingen Ugaldebere
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
HotKey en menús
Publicado: Mié Mar 29, 2006 5:31 pm
por jfgimenez
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
HotKey en menús
Publicado: Jue Mar 30, 2006 9:28 am
por Bingen Ugaldebere
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.