Может показаться естественным использовать Ctrl + +, Ctrl + - и Ctrl + 0 в качестве ярлыков для действий приложения по увеличению, уменьшению и восстановлению масштаба по умолчанию (обычно 100 %). Теперь в Delphi я могу назначать сочетания клавиш Ctrl + + и Ctrl + 0. Первый, однако, требует использования знака «плюс» основной части клавиатуры; знак плюс на цифровой клавиатуре использовать нельзя.
Проблема возникает, однако, когда я хочу назначить Ctrl + - в качестве ярлыка. Это просто не работает. Если я назначу "Ctrl+-" в IDE, значение, сохраненное в свойстве ShortCut
, будет 16495
. Если мы вычтем из этого ssCtrl
, мы получим 111. Можно было бы предположить, что можно было бы присвоить ShortCut := 45 + ssCtrl
или, что то же самое, ShortCut := Menus.ShortCut(45, [ssCtrl])
, потому что ord('-') = 45
. Но это не работает.
Однако я нашел рабочее решение: ShortCut := 189 + ssCtrl
. Я выбираю 189, потому что это число, которое я получаю, когда нажимаю клавишу "-" и слушаю событие KeyDown
.
Итак, почему я не доволен этим? Что ж, я боюсь, что константа 189 действительна только на шведских клавиатурах. Я попытался прочитать об этом, и, как обычно, документация MSDN довольно ясна, но кто знает, как Delphi справляется с вещами.