2010-08-28 4 views
5

Potrebbe sembrare naturale utilizzare Ctrl + +, Ctrl + -, e Ctrl + come scorciatoie per zoom di un'applicazione in, zoom out, e ripristinare zoom predefinito (in genere 100 %) Azioni. Ora, a Delfi, io sono in grado di assegnare Ctrl ++ e Ctrl + come scorciatoie. Il primo, tuttavia, richiede che venga utilizzato il segno più della parte principale della tastiera; il segno più del tastierino numerico non può essere utilizzato.Ctrl + - (Ctrl + Hyphen-Minus) come chiave ShortCut?

problema si pone, tuttavia, quando voglio assegnare Ctrl +- come scorciatoia. Semplicemente non funziona. Se assegno "Ctrl + -" nell'IDE, il valore memorizzato nella proprietà ShortCut è 16495. Se sottraiamo ssCtrl da questo, otteniamo 111. Una soluzione, si potrebbe pensare, sarebbe assegnare ShortCut := 45 + ssCtrl o, equivalentemente, ShortCut := Menus.ShortCut(45, [ssCtrl]), perché ord('-') = 45. Ma questo non funziona.

Tuttavia, ho trovato una soluzione operativa: ShortCut := 189 + ssCtrl. Scelgo 189 perché è il numero che ricevo quando preme il tasto "-" e ascolto l'evento KeyDown.

Quindi, perché non sono contento di questo? Beh, temo che la costante 189 sia valida solo sulle tastiere svedesi. Ho provato a leggere su questo, e, come al solito, the MSDN documentation è piuttosto chiaro, ma poi, chissà come Delphi gestisce le cose.

+0

Suggerimento: aggiungere un alias per Ctrl + = per l'ingrandimento, altrimenti è necessario utilizzare Ctrl + MaiusC++ sulle tastiere senza tastierino numerico. – Douglas

+0

@Douglas: sulla mia tastiera, inserisco un segno più premendo il tasto + (senza maiuscole o ctrl + maiuscole) proprio sopra "P" e "Å" (sì, le tastiere svedesi sono fatte così - http: // www .99.se/allegati/powerbook-macbook-pro/14819d1199736163-Svenskt-vs-danskt-tangentbord-800px-kb_sweden.svg.png). Questo è anche il mio problema: le chiavi non sono le stesse su tastiere diverse. –

risposta

6

Il codice chiave 189 è VK_OEM_MINUS in Windows.pas, quindi la soluzione non è solo per gli svedesi.

+0

Grazie mille. Questo era esattamente quello che volevo sentire! –

0

Io non so perché che stai ricevendo 16495 per Ctrl +-. Quando aggiungo questa scorciatoia a un'azione, essa mi dà 16573, e appare nel menu come Ctrl + -, e questa scorciatoia funziona.

Tuttavia, si è certi che Menus.ShortCut(ord('-', [ssCtrl]) non funziona. Si dà il valore di 16429 e si presenta sul menu come Ctrl +Ins, e Ctrl +Ins opere come la scorciatoia.

Forse questo è un problema con Delphi 2009 e successivamente poiché hanno aggiunto Unicode.

+0

Il cast di 'Word' è equivalente alla funzione' Ord' che ha già provato. –

+0

Sì, ma non vuole codificare il "45". Mentre questo permette al personaggio che vuole. Non sono sicuro del motivo per cui dice che non funziona sulla sua macchina. Entrambi i "45" o i Word ('-') sembrano funzionare per me. – lkessler

+0

Oh, ora vedo il suo problema. La funzione ShortCut non funziona. Dovrò cambiare la mia risposta. – lkessler

1

il corretto da utilizzare Menu di scelta rapida sul tastierino numerico è
CtrlNum + per la [+]
CtrlNum - per il [-]

c'è uno spazio tra Num + e Num -