It might seem natural to use Ctrl++, Ctrl+-, and Ctrl+0 as shortcuts for an application's zoom in, zoom out, and restore default zoom (typically 100 %) actions. Now, in Delphi, I am able to assign Ctrl++ and Ctrl+0 as shortcuts. The former, though, requires that the plus sign of the main part of the keyboard is used; the plus sign of the numerical keypad cannot be used.
Problem arises, however, when I want to assign Ctrl+- as a shortcut. It simply doesn't work. If I assign "Ctrl+-" in the IDE, the value stored in the ShortCut
property is 16495
. If we subtract ssCtrl
from this, we obtain 111. A work-around, one would believe, would be to assign ShortCut := 45 + ssCtrl
, or, equivalently, ShortCut := Menus.ShortCut(45, [ssCtrl])
, because ord('-') = 45
. But that doesn't work.
However, I have found a working solution: ShortCut := 189 + ssCtrl
. I choose 189 because that is the number I receive when I depress the "-" key and listen to the KeyDown
event.
So, why am I not happy with this? Well, I am afraid that the constant 189 only is valid on Swedish keyboards. I have tried to read about this, and, as usual, the MSDN documentation is rather clear, but then, who knows how Delphi handles things.