![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 28.11.2007
Сообщений: 49
|
![]()
Народ, подскажите, как на событии OnShortCut формы сделать комбинированный ShortCut, например (CONTROL + F3).
С одной клавишей все ясно, а вот сдвумя никак... procedure TForm1.FormShortCut(var Msg: TWMKey; var Handled: Boolean); begin if Msg.CharCode = VK_F3 then ShowMessage(''); end; |
![]() |
![]() |
![]() |
#2 |
stopfake.org
Участник клуба
Регистрация: 03.05.2007
Сообщений: 1,927
|
![]()
HotKeys - комбинации клавиш
hotkeys - комбинации клавиш, на которые может реагировать приложение, даже если оно не имеет фокуса или запущено в трее. hotkey состоит из клавиши-модификатора (win, alt, control, shift), и нажатия на любую другую клавишу, которая имеет виртуальный код. Для того чтобы научить программу обрабатывать горячие клавиши, углубимся в загадочные джунгли api, но прежде этого создадим обработчик события wm_hotkey. Для этого объявим в классе tform1 следующий метод: private Код:
и в случае положительного ответа в заголовок окна главной формы выводится соответствующая строка. Теперь обратимся непосредственно к созданию горячей клавиши - в нашем примере это будет все та же alt-f10. Вначале ее нужно зарегистрировать в системе. Как это делается? При помощи функции: Код:
fsmodifiers - модификаторы (mod_alt, mod_control, mod_shift, mod_win), а vk - виртуальный код клавиши (см. константы с префиксом vk_). Параметр id заслуживает отдельного разговора. Для приложения значение id может лежать в диапазоне 0000h..bfffh, а для разделяемых динамических библиотек диапазон будет таким: c000h..ffffh. Однако во избежание конфликтов между горячими клавишами различных процессов целесообразно использовать значение, возвращаемое функцией globaladdatom, передавая ей в качестве параметра некую null-terminated строку длиной до 255 символов. Вот как это делается: Объявим глобальную переменную keyid: integer; Она станет атомом, который создастся вышеописанной функцией, и будет служить идентификатором горячей клавиши. Для удобства поместим на форму две кнопки - первая будет создавать hotkey, вторая - уничтожать. Итак, создаем и регистрируем горячую клавишу: Код:
Код:
activatekeyboardlayout(0,hkl_next) - циклично переключает раскладку. Загрузить русскую можно с помощью кода: loadkeyboardlayout('00000419', klf_activate), а английскую - loadkeyboardlayout('00000409',klf_a ctivate). Журнал "Программист", №5 |
![]() |
![]() |