Отключить сочетание клавиш (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.

Другие вопросы по тегам