|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
как организовать перехват нажатия сочетания клавиш
как сделать так чтобы при нажатии определенной комбинации клавиш к примеру ctrl+y или при нажатии клавиш f1 f2 f3 программа совершала какое либо действие а именно выводила сообщение или открывала дочернее окно
помогите кто может плиз за ранее благодарен Последний раз редактировалось series777, 15.10.2009 в 13:34. |
#2
|
||||
|
||||
Для этого есть компонент ActionManaget
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
|||
|
|||
а как именно это реализовать если не сложно можно привести пример плиз
|
#4
|
||||
|
||||
Кидаете на форму компонент ActionManager. Вызываете в его свойствах Customize. Добавляете в его список New Action. Для него в свою очередь в инспекторе объектов обрабатываете событие OnExecute а так-же устанавливает в свойстве ShortCut нужное сочетание клавиш.
Все Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#5
|
||||
|
||||
Цитата:
RegisterHotKey() Delphi в Internet - блог о программировании. Малоизвестные и редко обсуждаемые темы программирования на Delphi |
#6
|
|||
|
|||
а можнопо подробнее насчет RegisterHotKey()
|
#7
|
||||
|
||||
Цитата:
Код:
procedure TForm1.FormCreate(Sender: TObject); begin id1 := GlobalAddAtom('Hotkey1'); RegisterHotKey(Handle, id1, VK_CONTROL, MapVirtualKey(VkKeyScan('y'),0)); .... end; Код:
private id1: Integer; procedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY; {.....} implementation {$R *.DFM} procedure TForm1.WMHotKey(var Msg: TWMHotKey); begin if Msg.HotKey = id1 then begin {что-то делаем в программе} end end; Подобным образом можно отлавливать всё, что угодно, любое сочетание клавиш. На всякий случай поясню некоторые функции: VkKeyScan('y') - определяет скан-код клавиши MapVirtualKey(VkKeyScan('y'),0) - переводит скан-код в виртульный код Константы типа VK_... описаны в модуле Windows. Вроде бы все. Если что-то непонятно - не стесняйтесь, спрашивайте. Попробую ответить более развернуто Чуть не забыл. При выключении программы необходимо снимать свои горячие системные клавиши функцией (для нашего примера): Код:
UnregisterHotKey(Handle, id1) Delphi в Internet - блог о программировании. Малоизвестные и редко обсуждаемые темы программирования на Delphi Последний раз редактировалось Vlad55, 19.10.2009 в 12:34. |
#8
|
|||
|
|||
Vlad55 спасибо тебе за разьяснения
|
#9
|
|||
|
|||
а как можно перехватить нажатие клавиш в цикле?
while true do begin if klavisha=vk_F12 then break; end; вот примерно так мне нужно |