![]() |
|
|
|
|
#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.
|