Отключить сочетание клавиш (delphi)
Я создал форму в Delphi. Скажи у меня есть Form
с speedbutton
с этикеткой "&Add"
(подчеркните A, как сочетание клавиш) и dbgrid
(только для чтения) (или другой элемент управления, например TButton
).
Затем я изменил фокус на Dbgrid
(dbgrid
получил фокус) (или TButton
).
Каждый раз, когда я нажимаю клавишу на dbgrid
, onClick
метод на speedbutton
триггеры.
Иногда мне нужно отключить его на некоторое время по какой-то причине, а затем я включаю его снова. Как отключить speedbutton
ярлык? А потом как его снова включить?
2 ответа
Форма нажимает кнопку, когда вы нажимаете кнопку A, потому что кнопка выразила интерес к этой клавише, и ничто другое в вашей форме не принимает нажатия клавиш. Если у вас есть поле для редактирования в форме, и у него был фокус ввода, то кнопка не сработает.
Вы можете сделать элемент управления, указывающий, что он хочет получать нажатия клавиш, когда у него есть фокус, но это обычно происходит при написании пользовательского элемента управления, когда у вас есть некоторое представление о том, что должен делать новый класс элемента управления, когда он получает ввод с клавиатуры.
Если вы не хотите, чтобы кнопка сработала, вы можете отключить ее. Другой вариант - изменить обработчик события OnClick для проверки других условий (например, имеет ли сетка фокус) перед выполнением обычного кода обработки кликов.
Вы можете отключить ярлык, изменив метку кнопки скорости с &Add
в Add
, Замените его обратно, когда вам нужно снова включить ярлык.
Обратите внимание, что указание такого символа ускорителя позволяет использовать два сочетания клавиш, один из которых является ключом, начинающимся с &
а другой тот же ключ с Alt. Итак, в вашем случае это будут A и Alt+A. Таким же образом устранение ускорителя отключает оба ярлыка. Итак, имейте в виду, что при таком способе отключения ярлыка вы не сможете нажать кнопку ни с помощью A, ни с помощью Alt+A.