Страница 1 из 1

Как приделать горячую клавишу к форме?

Добавлено: 14 окт 2005, 13:11
Dr_Grizzly
Привет всем! Вот еще вопрос, я прячу форму, после чего к ней никак не попасть, как сделать горячую клавишу, лучше комбинацию?

Добавлено: 14 окт 2005, 17:51
Duncon

Код: Выделить всё

//В обработчике события 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;
[/color]

Добавлено: 17 окт 2005, 14:00
Dr_Grizzly
Спасибо! Штука работает, спора нет, подскажи как можно поменять комбинацию из программы? Точнее, есть компонент HotKey, там он пишет нажатую комбинацию, допустим я ее сохраню в реестре, а как теперь ее подставить сюды:

Код: Выделить всё

RegisterHotkey(Handle, 1, MOD_ALT or MOD_SHIFT, VK_F12)
тут же MOD_*; VK_*; а у компонента-текст. Или я чего-то недопонимаю, разъясните плиииизз.

Добавлено: 17 окт 2005, 15:43
Duncon
Че-то я тоже ни чего не понял, но ты мне близок
причем тут реестр? MOD_ALT; - это системный отлов нажатия из винды(см Windows)[поправте кто поумней если не прав]
Давай на пальцах что сделать хочешь....????

Добавлено: 17 окт 2005, 16:58
LAngel
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);
:) ))

Добавлено: 18 окт 2005, 10:36
Dr_Grizzly
Ща попробую на пальцах объяснить :)
Значит так, у нас есть такая штука:

Код: Выделить всё

 if not RegisterHotkey(Handle, 1, MOD_ALT or MOD_SHIFT, VK_F12) then
 ShowMessage('Unable to assign Alt-Shift-F11 as hotkey.');
Это значит если какая-то прога уже зарезервировала эту комбинацию, значит наша уже использовать ее не может. Логичный вывод, как сделать так,чтоб пользователь смог изменить ее на любую другую комбинацию, какая ему нравиться? А реестр я использую для хранения этих параметров, чтоб при перезапуске прога отображала последние изменения. [может конечно реестр - это не есть гуд,но другого придумать пока не могу :) ]

Добавлено: 18 окт 2005, 11:35
Duncon
Так блин, после then вместа ShowMessage вставляй код что-то типа формы предлагающей выбор и в конце рег. других...
Вариантов много на самом деле, надо только включить фантазию.. А переменные лучше считывать из файла, к примеру при переустановки win-ды реестр умрет а файл нет, опятьже в негоже можно горячие клавиши записывать(сколько плюсов)....