Ctrl + - (Ctrl + Дефис-Минус) как клавиша быстрого доступа? - PullRequest
5 голосов
/ 29 августа 2010

Может показаться естественным использование 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 справляется с ситуацией.

Ответы [ 3 ]

6 голосов
/ 29 августа 2010

Код ключа 189 - VK_OEM_MINUS в Windows.pas , поэтому ваше решение предназначено не только для шведов.

1 голос
/ 25 июля 2011

правильное использование ярлыка меню на цифровой клавиатуре -
Ctrl Num + для [+]
Ctrl Num - для [-]

между Num + и Num есть пробел -

0 голосов
/ 29 августа 2010

Я не уверен, почему вы получаете 16495 за Ctrl + - .Когда я добавляю этот ярлык к действию, он дает мне 16573, и он отображается в меню как Ctrl + - , и этот ярлык работает.

Тем не менее, вы правы, что Menus.ShortCut(ord('-', [ssCtrl]) не работает.Он дает значение 16429 и отображается в меню как Ctrl + Ins , а Ctrl + Ins работает как ярлык.

Возможно, это проблема Delphi 2009 и более поздних версий, так как они добавили Unicode.

...