Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.07.25;
Скачать: CL | DM;

Вниз

Горячие клавиши WM_HOTKEY в KOL   Найти похожие ветки 

 
Fanny   (2004-12-22 13:20) [0]

на http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=15-988621066 есть пример установки Горячих клавиш, но в KOL возникла проблема - после написания раздела PROTECTED procedure HotKey(var msg:TMessage); message WM_HOTKEY; он ругается и говорит что-то про public (в следующей строке). Может есть какая-то "фича" в написании этой процедуры в KOL?


 
ECM ©   (2004-12-22 15:44) [1]

FAQhttp://bonanzas.rinet.ru/r_faq.htm#Q18


 
ECM ©   (2004-12-22 15:48) [2]

А проще - поставь обработчик WM_HOTKEY в OnMessage Applet-а


 
ECM ©   (2004-12-22 15:51) [3]

Вопрос : Как обрабатывать произвольное сообщение WM_XXX?

Элементарно :) Надо использовать событие OnMessage, которое есть у любого (практически, в разумных пределах) компонента. Делаем так:
function TForm1.KOLForm1Message(var Msg: tagMSG;
 var Rslt: Integer): Boolean;
begin
 Result:=False;
 if Msg.message=WM_XXX then
 begin
   // тут идет работа с сообщением, делаем что хотим
   // фактически OnXXX
   // Если мы не хотим, что бы это сообщение
   // обрабатывалось еще другим (стандартным) обработчиком
   // пишем
   // Result:=True;
   // Если функция должна что―то возвращать системе в
   //ответ на сообщение, то пишем следующее:
   // Rslt:=What_you_must_to_return;
 end;
end;

Rslt - это то, что возвращается системе в ответ на сообщение. Result - это для процедуры перечисления динамических обработчиков событий. Сигнал, что надо прекратить дальнейшую обработку (true). А дальше - по обстоятельствам. Если Result=FALSE, то Rslt установится следующим обработчиком или обработчиком по умолчанию. Обычно Result устанавливается в TRUE одновременно с установкой нужного Rslt, когда дальнейшая обработка уже точно не нужна или вредна.  

Это из FAQ-а kol.mastak.ru - пока он не работает :)


 
Fanny   (2004-12-24 09:55) [4]

хе... я так и думал !

ну а если я сделаю как:

if Msg.message = WM_HOTKEY then
   begin
 
   end;

то что мне ловить? Так называемый wParam?
или VK_Fx + проверка на Alt, Ctrl, Shift?


 
mdw ©   (2004-12-24 11:26) [5]

Вот пример. Я здесь по нажатию Control+"<" и Control+">" ставлю типогравские кавычки.

procedure TMainForm.KOLFormFormCreate(Sender: PObj);
begin
   RegisterHotKey(Form.Handle, GlobalAddAtom("TV_CONTROL_QuoteL"), MOD_CONTROL, 188);
   RegisterHotKey(Form.Handle, GlobalAddAtom("TV_CONTROL_QuoteR"), MOD_CONTROL, 190);
end;
procedure TMainForm.KOLFormDestroy(Sender: PObj);
begin
   UnregisterHotKey(Form.Handle, GlobalAddAtom("TV_CONTROL_QuoteL"));
   UnregisterHotKey(Form.Handle, GlobalAddAtom("TV_CONTROL_QuoteR"));
end;
function TMainForm.KOLFormMessage(var Msg: tagMSG; var Rslt: Integer): Boolean;
begin
   Result:= False;
   if (Form.Focused) and (Msg.message = WM_HOTKEY) then begin
     if (Form.Focused) and (LoWord(Msg.lParam) = MOD_CONTROL) and (HiWord(Msg.lParam)=188) then
       if EditBox.Focused then SendMessage(EditBox.Handle, WM_CHAR, ord("«"), LPARAM($00000001 or $40000000 or $80000000));
     if (Form.Focused) and (LoWord(Msg.lParam) = MOD_CONTROL) and (HiWord(Msg.lParam)=190) then
       if EditBox.Focused then SendMessage(EditBox.Handle, WM_CHAR, ord("»"), LPARAM($00000001 or $40000000 or $80000000));
   end;
end;



Страницы: 1 вся ветка

Текущий архив: 2005.07.25;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.052 c
14-1120044792
Магнум
2005-06-29 15:33
2005.07.25
Выход в Инет через Pocket PC


14-1120460018
Chaster
2005-07-04 10:53
2005.07.25
PHP Dump


14-1120423282
Knight
2005-07-04 00:41
2005.07.25
Ё-хо!!! У меня погасла иконка "Сетевой кабель не подключен" !!!


3-1118394819
Andy Nortsov
2005-06-10 13:13
2005.07.25
Как правильно работать с ADO+ODBC+FireBird+Delphi?


10-1097676636
Morj
2004-10-13 18:10
2005.07.25
Сортировка диапазона ячеек в Excel