Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 3 023

Раздел: Delphi » Прочее
/ вопрос открыт /

Здравствуйте, эксперты!
Возникла такая проблема: необходимо отловить нажатие сочетания клавишь в моем приложении. Спомощью RegisterHotkey отлавливаю, но мне надо чтобы сочетания отлавливались только в моей программе, а не глобально.
Отлавливаю нажатие отдельныйх клавиш следующим образом:

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if key=VK_F2 then Showmessage('Pressed F2');
end;
Но вот как мне отловить сочетание клавиш?

Ученый Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Ученый (статус: 8-ой класс)
Вопрос отправлен: 22 июля 2009, 16:24
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 10; последнее сообщение — 22 июля 2009, 19:53; участников в обсуждении: 3.
Вадим К

Вадим К (статус: Академик), 22 июля 2009, 16:36 [#1]:

keypreview := true для формы? вроде так это свойство называется.
Галочка "подтверждения прочтения" - вселенское зло.
Ученый

Ученый (статус: 8-ой класс), 22 июля 2009, 16:43 [#2]:

keypreview :=false, меняю на true и все равно глобально отлавливает. отлавливаю спомощью procedure WMHotkey( var msg: TWMHotkey ); message WM_HOTKEY;
Вадим К

Вадим К (статус: Академик), 22 июля 2009, 16:51 [#3]:

ну так, ловить теперь надо не глобально, а кодом, описанным в вопросе.
Галочка "подтверждения прочтения" - вселенское зло.
Ученый

Ученый (статус: 8-ой класс), 22 июля 2009, 16:56 [#4]:

в приведенном коде отлавливается нажатие F2, но вот как скажем мне отловить сочетание Alt+F2? что то на подобии if (key=VK_F2) and (key=MOD_ALT) then Showmessage('Pressed F2'); ?
Ерёмин А.А.

Ерёмин А.А. (статус: *Администратор), 22 июля 2009, 17:00 [#5]:

... and (Shift = [ssAlt]) ...
Вадим К

Вадим К (статус: Академик), 22 июля 2009, 17:01 [#6]:

там есть параметр Shift.
Но это множество и проверять надо так
if (key=VK_F2) and (ssCtrl in Shift) then #Ctrl нажат также#
Галочка "подтверждения прочтения" - вселенское зло.
Вадим К

Вадим К (статус: Академик), 22 июля 2009, 17:04 [#7]:

В примере Андрея получается что проверятеся нажатия только альта и никаких других клавиш-модификаторов. В моем - проверятся нажатие Ctrl, а положение остальных клавиш-модификаторов игнорируется.
Галочка "подтверждения прочтения" - вселенское зло.
Ученый

Ученый (статус: 8-ой класс), 22 июля 2009, 17:18 [#8]:

Для обоих примеров одно замечание: срабатывает если скажем зажать одну лишнюю клавишу...ну скажем не Alt+F2, а Alt+Q+F2
Вадим К

Вадим К (статус: Академик), 22 июля 2009, 17:38 [#9]:

а где Вы видели такую комбинацию Alt+Q+F2? это Alt+Q и Alt+F2 по очереди. хотя могут быть исключения. Но одновременно обработать такую комбинацию без прямгого доступа к контролеру клавиатуры очень сложно.
Галочка "подтверждения прочтения" - вселенское зло.
Ученый

Ученый (статус: 8-ой класс), 22 июля 2009, 19:53 [#10]:

Ясно. Большое спасибо за помощь! Вопрос исчерпан:)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:31
Выполнено за 0.02 сек.