![]() |
|
|
#1
|
|||
|
|||
![]() Здравствуйте. Возникла следующая потребность:
Нужно пользователю сделать выбор горячих клавиш. То есть сам код их уже есть в настройках нужно указать только горячую клавишу. Разъясню на примере: Пользователю нужно, что бы на Tab переходило на новую строку. В настройках уже код этого есть, но там по стандарту стоит enter. Дак вот, пользователь может нажать в настройках допустим на клавишу tab и теперь он может tab'ом переходить между строк. Так называемый key bindings. |
#2
|
||||
|
||||
![]() Код:
Как сделать так, чтобы при минимизации приложения в Tray его можно было вызвать определённой комбинацией клавиш, например Alt-Shift-F9 ? //В обработчике события OnCreate //основной формы создаём горячую клавишу: if not RegisterHotkey(Handle, 1, MOD_ALT or MOD_SHIFT, VK_F9) then ShowMessage('Unable to assign Alt-Shift-F9 as hotkey.'); //В событии OnClose удаляем горячую клавишу: UnRegisterHotkey( Handle, 1 ); //Добавляем обработчик в форму для сообщения //WM_HOTKEY: private // в секции объявлений формы procedure WMHotkey( var msg: TWMHotkey ); message WM_HOTKEY; procedure TForm1.WMHotkey( var msg: TWMHotkey ); begin if msg.hotkey = 1 then begin if IsIconic( Application.Handle ) then Application.Restore; BringToFront; end; end; Это пример вставки гарячих клавиш, взял с делфи ворда, дак вот, если ты хочешь, чтоб в даном примере например место alt+shift+f9 поменять на ctrl+shift+f9, то измени строчку Код:
if not RegisterHotkey(Handle, 1, MOD_ALT or MOD_SHIFT, VK_F9) then НА if not RegisterHotkey(Handle, 1, MOD_CTRL or MOD_SHIFT, VK_F9) then // собственно здесь мы и изменяем гарячие клавиши... экспериментируй... Помогаю за Спасибо ![]() |
#3
|
|||
|
|||
![]() Мне не совсем это надо. Если я в ручную буду перебирать все сочетания, то это не реально. Пользователь может зажать любые клавиши, которые и станут горячими, хоть ENTER, хоть Q+1. Можно ли такое реализовать?
|
#4
|
||||
|
||||
![]() Почему нереально?
В настройках (или где тебе надо изменять гарячие клавиши) создаешь едит (например), в который пользователь будет вводить 3 клавишу (пример: Alt+Shift (обязательные) + его клавиша (может быть например F2)), и есть глобальная переменная (допустим q: integer), и когда пользователь нажимает "сохранить настройки" пишешь в buttonsaveClick: Код:
q := Edit.Text; ... а потом собственно изменяешь: if not RegisterHotkey(Handle, 1, MOD_CTRL or MOD_SHIFT, q) then Где q - сама клавиша (коды клавиш можешь найти в инете)... Помогаю за Спасибо ![]() |
#5
|
|||
|
|||
![]() Спасибо, жаль что только через ктрл шифт, думал можно и обычные клавиши устанавливать.
|
#6
|
|||
|
|||
![]() можно любые. делай через Action's.
|