Текущий архив: 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