14 / 14 / 7
Регистрация: 10.01.2011
Сообщений: 146
|
|
1 | |
Горячие клавиши - обойти наведение фокуса и привязать клавиши клавиатуры к кнопкам на форме29.02.2012, 23:33. Показов 7024. Ответов 9
Метки нет (Все метки)
всем доброго времени суток. столкнулся с такой проблемой. требуется чтобы при нажатии определенных кнопок на клавиатуре соответственно срабатывали кнопки на форме (к примеру на нажатие пробела у меня должна срабатывать Button2, на Enter должна срабатывать Button3, на стрелки должен изменяться прогресс в Gauge).
пробовал описать эти кнопки в функции FormKeyDown. они срабатывают, но только на тех кнопках, на которые наведен фокус. есть ли возможность обойти наведение фокуса и привязать клавиши клавиатуры к кнопкам на форме?
0
|
29.02.2012, 23:33 | |
Ответы с готовыми решениями:
9
Как присваивать горячие клавиши к примеру на выполнение нажатие клавиши Горячие клавиши только в форме Горячие клавиши: скрыть кнопки на форме Написать горячие клавиши для виртуальной клавиатуры |
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,064
|
||||||
01.03.2012, 07:24 | 2 | |||||
В инспекторе объектов главной формы KeyPreview поставь в положение true.
1
|
Практикантроп
4838 / 2724 / 532
Регистрация: 23.09.2011
Сообщений: 5,787
|
||||||
01.03.2012, 12:46 | 3 | |||||
Сообщение было отмечено как решение
Решение
- установите нужные клавиши "горячими"__
3
|
01.03.2012, 17:19 | 4 | |||||
Samrisbe, маленькая поправка, коли ТС пожелает использовать приведенный вами код - в обработчик Button1Click() не стоит передавать параметром Sender, ведь в этом случае туда прилетит указатель на форму, что может быть неожиданно в некоторых ситуациях. Лучше так:
1
|
14 / 14 / 7
Регистрация: 10.01.2011
Сообщений: 146
|
|
01.03.2012, 19:00 [ТС] | 5 |
Samrisbe, BRcr проблема осталась. я попробовал записать на кнопку пробела код. итог - функцию вызывает 2 раза. и вызывает только на кнопке, у которой есть фокус
nick42 понятия не знаю в чем дело, но код не работал. реакции программы никакой
0
|
14 / 14 / 7
Регистрация: 10.01.2011
Сообщений: 146
|
||||||
14.03.2012, 20:08 [ТС] | 6 | |||||
0
|
14 / 14 / 7
Регистрация: 10.01.2011
Сообщений: 146
|
||||||
14.03.2012, 21:04 [ТС] | 8 | |||||
ошибок не выдает, но и не работает. нажатия на кнопки не пытается отлавливать. функция TForm1::ApplicationEvents1Message описана была в protected. параметр Sender я тоже прописывал. не помогло
Добавлено через 5 минут я пытался просто посмотреть есть ли вообще реакция на нажатия клавиш.
все. разобрался с кодом. спасибо)
0
|
14 / 14 / 7
Регистрация: 10.01.2011
Сообщений: 146
|
||||||
26.03.2012, 22:08 [ТС] | 10 | |||||
ну получается что код правильный. стоило в нем только разобраться.
объясню на примере:
но вместе с тем появилась и новая проблема. я поставил отлавливание пробела. его отловило и сделало то что надо, но если открыты другие приложения, то в них пробел напрочь не работает!!! моя программа все равно его перехватывает. как это исправить???
2
|
26.03.2012, 22:08 | |
26.03.2012, 22:08 | |
Помогаю со студенческими работами здесь
10
Windows 7 Не работают горячие клавиши клавиатуры Defender Cascade 960 Отловить событие клавиши (стрелок клавиатуры) на форме Связать нажатие и отжатие клавиши клавиатуры и кнопки на форме Есть ли разница между программным посылом клавиши PostMessage и посылом клавиши при нажатии клавиатуры? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |