Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сделать несколько Hotkey's?


Al ©   (2008-07-09 22:54:00) 

Здраствуйте подскажите пожалуйста как сделать несколько Hotkey?  Про одну все понятно, а несколько никак не получается, наверное руки совсем кривые:).  
private
 procedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY;
...
const
 MyHotKey = ord('1');

procedure TForm1.WMHotKey(var Msg: TWMHotKey);
begin
 MessageBeep(0);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 RegisterHotKey(Form1.Handle, MyHotKey, 0, MyHotKey);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 UnRegisterHotKey(Form1.Handle, MyHotKey);
end;


Al   (2008-07-11 14:00:00) [1]

Спасибо to User   (10.07.08 09:53) [5]
Ну и всем отписавшимся   за бурное обсуждение:)


Anatoly Podgoretsky   (2008-07-10 12:27:00) [2]

> brother  (10.07.2008 5:16:03)  [3]

Ну так, никто не знает английского, в компьютерах совсем не разбирается, с Ворд/Эксель и браузе по их словам Мы не умеем работать.


KilkennyCat   (2008-07-10 10:59:00) [3]


> Leonid Troyanovsky ©   (10.07.08 09:53) [4]


Нам неизвестно, мож сознательно сие :)


Leonid Troyanovsky   (2008-07-10 09:53:00) [4]


> Al   (09.07.08 22:54)  

> Здраствуйте подскажите пожалуйста как сделать несколько
> Hotkey?

Одного такого вполне достаточно, чтобы юзеры тебе руки поотрывали.
См. TActionList, Action.ShortCut.

--
Regards, LVT.


User   (2008-07-10 09:53:00) [5]


type
 TForm1 = class(TForm)
...
 private
   id1, id2, id3, id4: integer;
   procedure wmhotkey(var msg: twmhotkey); message wm_hotkey;
...
procedure TForm1.wmhotkey(var msg: twmhotkey);
begin
 if msg.hotkey = id1 then ... // действие 1;
 if msg.hotkey = id2 then ... // действие 2;
 if msg.hotkey = id3 then ... // действие 3;
 if msg.hotkey = id4 then ... // действие 4;
end;
...
procedure TForm1.FormCreate(Sender: TObject);
begin
 id1:= globaladdatom('hotkey1'); RegisterHotKey(handle, id1, mod_key_1, key1);
 id2:= globaladdatom('hotkey2'); RegisterHotKey(handle, id2, mod_key_2, key2);
 id3:= globaladdatom('hotkey3'); RegisterHotKey(handle, id3, mod_key_3, key3);
 id4:= globaladdatom('hotkey4'); RegisterHotKey(handle, id4, mod_key_4, key4);
...
procedure TForm1.FormDestroy(Sender: TObject);
begin
 unregisterhotkey(handle, id1); globaldeleteatom(id1);
 unregisterhotkey(handle, id2); globaldeleteatom(id2);
 unregisterhotkey(handle, id3); globaldeleteatom(id3);
 unregisterhotkey(handle, id4); globaldeleteatom(id4); ...
end;
...
/CODE> - взято из какого-то FAQ ...


brother   (2008-07-10 05:16:00) [6]

> Видна "малограмотность".

но и конференция подходящая)))
жаль, что гуглить нормально уже все разучились, одни мастаки и умеют)))
зы напомнило это:
Вот как соощение о вирусе всплывает, так все сразу админа зовут с криками о помощи, а как 1 июля квип упал, так сами все прекрасно обновили. (с) Баш


Германн   (2008-07-10 01:31:00) [7]


> Al   (09.07.08 22:54)
>
> Здраствуйте подскажите пожалуйста как сделать несколько
> Hotkey?  Про одну все понятно, а несколько никак не получается,
>  наверное руки совсем кривые:).  
>

Кривость рук по сабжу не видно. Видна "малограмотность".
Ну прям как в 20-х годах прошлого века в России ака РСФСР. "Буквы знаю, а читать не умею".
Пора вводить новый, современный ликбез. :)


KilkennyCat   (2008-07-10 01:16:00) [8]

Зарегестрировать столько, сколько надо.

Иными словами, повторить код в onCreate и onDestroy столько, сколько надо.
В обработке получения сообщения создать условие, чему равно Msg


Наверх

Титульная страница Поиск, карта сайта Написать письмо