2010-08-28 15 views
5

Podría parecer natural utilizar Ctrl + +, Ctrl + -, y Ctrl + como accesos directos para el zoom de una aplicación, alejar, y restaurar zoom predeterminado (típicamente 100 %) acciones. Ahora, en Delphi, soy capaz de asignar Ctrl ++ y Ctrl + como accesos directos. El primero, sin embargo, requiere que se use el signo más de la parte principal del teclado; el signo más del teclado numérico no se puede usar. surgeCtrl + - (Ctrl + Hyphen-Minus) como tecla de abreviatura?

problema, sin embargo, cuando quiero asignar Ctrl +- como acceso directo. Simplemente no funciona. Si asigno "Ctrl + -" en el IDE, el valor almacenado en la propiedad ShortCut es 16495. Si restamos ssCtrl de esto, obtenemos 111. Una solución alternativa, se podría pensar, sería asignar ShortCut := 45 + ssCtrl, o, equivalentemente, ShortCut := Menus.ShortCut(45, [ssCtrl]), porque ord('-') = 45. Pero eso no funciona.

Sin embargo, he encontrado una solución de trabajo: ShortCut := 189 + ssCtrl. Elijo 189 porque ese es el número que recibo cuando presiono la tecla "-" y escucho el evento KeyDown.

Entonces, ¿por qué no estoy contento con esto? Bueno, me temo que la constante 189 solo es válida en teclados suecos. Intenté leer sobre esto y, como de costumbre, the MSDN documentation es bastante claro, pero quién sabe cómo maneja Delphi.

+0

Consejo: agregue un alias para Ctrl + = para ampliar, de lo contrario, debe usar Ctrl + Shift ++ en los teclados sin teclados numéricos. – Douglas

+0

@Douglas: en mi teclado, inserto un signo más presionando la tecla + (sin desplazamiento o Ctrl + Mayús) justo encima de "P" y "Å" (sí, los teclados suecos se parecen a eso - http: // www .99.se/attachments/powerbook-macbook-pro/14819d1199736163-svenskt-vs-danskt-tangentbord-800px-kb_sweden.svg.png). Este es también mi problema: las claves no son las mismas en diferentes teclados. –

Respuesta

6

El código de clave 189 es VK_OEM_MINUS en Windows.pas, por lo que su solución no es solo para los suecos.

+0

Muchas gracias. ¡Esto era exactamente lo que quería escuchar! –

0

No estoy seguro de por qué recibe 16495 para Ctrl +-. Cuando agrego ese atajo a una acción, me da 16573, y aparece en el menú como Ctrl + -, y ese atajo funciona.

Sin embargo, tiene razón en que Menus.ShortCut(ord('-', [ssCtrl]) no funciona. Se da el valor 16429 y se muestra en el menú como Ctrl +Ins, y Ctrl +Ins obras como el acceso directo.

Quizás esto sea un problema con Delphi 2009 y posterior ya que agregaron Unicode.

+0

El tipo de conversión 'Word' es equivalente a la función' Ord' que ya intentó. –

+0

Sí, pero él no quiere hardcode el "45". Mientras que esto permite que el personaje que quiere. No estoy seguro de por qué dice que no funciona en su máquina. O el "45" o la palabra ('-') parecen funcionar para mí. – lkessler

+0

Oh, ahora veo su problema. La función ShortCut no funciona. Tendré que cambiar mi respuesta. – lkessler

1

el correcto utilizar acceso directo del menú en el teclado numérico es
CtrlNum + para el [+]
CtrlNum - para el [-]

no se un espacio entre Num + y Num -

Cuestiones relacionadas