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.

HotKey en menús

Foro público de Xailer en español
Responder
Bingen Ugaldebere
Mensajes: 1310
Registrado: Mié Sep 26, 2007 7:12 pm

HotKey en menús

Mensaje 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.
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

HotKey en menús

Mensaje 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
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Bingen Ugaldebere
Mensajes: 1310
Registrado: Mié Sep 26, 2007 7:12 pm

HotKey en menús

Mensaje 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.
Bingen Ugaldebere
Mensajes: 1310
Registrado: Mié Sep 26, 2007 7:12 pm

HotKey en menús

Mensaje 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
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

HotKey en menús

Mensaje 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
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Bingen Ugaldebere
Mensajes: 1310
Registrado: Mié Sep 26, 2007 7:12 pm

HotKey en menús

Mensaje 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.
Responder