Как приделать горячую клавишу к форме?
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
-
- Сообщения: 407
- Зарегистрирован: 13 сен 2004, 12:05
- Откуда: Курган
- Контактная информация:
Привет всем! Вот еще вопрос, я прячу форму, после чего к ней никак не попасть, как сделать горячую клавишу, лучше комбинацию?
Код: Выделить всё
//В обработчике события 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;
-
- Сообщения: 407
- Зарегистрирован: 13 сен 2004, 12:05
- Откуда: Курган
- Контактная информация:
Спасибо! Штука работает, спора нет, подскажи как можно поменять комбинацию из программы? Точнее, есть компонент HotKey, там он пишет нажатую комбинацию, допустим я ее сохраню в реестре, а как теперь ее подставить сюды:
тут же MOD_*; VK_*; а у компонента-текст. Или я чего-то недопонимаю, разъясните плиииизз.
Код: Выделить всё
RegisterHotkey(Handle, 1, MOD_ALT or MOD_SHIFT, VK_F12)
Че-то я тоже ни чего не понял, но ты мне близок
причем тут реестр? MOD_ALT; - это системный отлов нажатия из винды(см Windows)[поправте кто поумней если не прав]
Давай на пальцах что сделать хочешь....????
причем тут реестр? MOD_ALT; - это системный отлов нажатия из винды(см Windows)[поправте кто поумней если не прав]
Давай на пальцах что сделать хочешь....????
[syntax=Delphi] [/syntax]
MOD_ALT, MOD_SHIFT и VK_F12 это константы. Ты можешь сам строить параметры в строке регистрации...
типа:
))
типа:
Код: Выделить всё
param1 := 0;
if ???? then param1 := param1 or MOD_ALT;
if ???? then param1 := param1 or MOD_SHIFT;
if ???? then param1 := param1 or MOD_CTRL;
param2 := Ord('A');
RegisterHotkey(Handle, 1, param1, param2);

С уважением, Lost Angel...
-
- Сообщения: 407
- Зарегистрирован: 13 сен 2004, 12:05
- Откуда: Курган
- Контактная информация:
Ща попробую на пальцах объяснить 
Значит так, у нас есть такая штука:
Это значит если какая-то прога уже зарезервировала эту комбинацию, значит наша уже использовать ее не может. Логичный вывод, как сделать так,чтоб пользователь смог изменить ее на любую другую комбинацию, какая ему нравиться? А реестр я использую для хранения этих параметров, чтоб при перезапуске прога отображала последние изменения. [может конечно реестр - это не есть гуд,но другого придумать пока не могу
]

Значит так, у нас есть такая штука:
Код: Выделить всё
if not RegisterHotkey(Handle, 1, MOD_ALT or MOD_SHIFT, VK_F12) then
ShowMessage('Unable to assign Alt-Shift-F11 as hotkey.');

Так блин, после then вместа ShowMessage вставляй код что-то типа формы предлагающей выбор и в конце рег. других...
Вариантов много на самом деле, надо только включить фантазию.. А переменные лучше считывать из файла, к примеру при переустановки win-ды реестр умрет а файл нет, опятьже в негоже можно горячие клавиши записывать(сколько плюсов)....
Вариантов много на самом деле, надо только включить фантазию.. А переменные лучше считывать из файла, к примеру при переустановки win-ды реестр умрет а файл нет, опятьже в негоже можно горячие клавиши записывать(сколько плюсов)....
[syntax=Delphi] [/syntax]