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

Вниз

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

 
Age   (2008-09-01 21:15) [0]

Здравствуйте, многоуважаемые мастера Delphi!
Существует проблема с горячими клавишами, дело в том что мне необходимо, что бы выполнялись определенные действия при нажатие на клавиши ctrl+Enter. Все бы ни чего, нашел код все работает, но проблема в том, перехватываются во всем приложениях. Вопрос как можно реализовать так, чтобы выполнялось только, когда курсор расположен в моем приложений в RxRichEdit?
Вот код который я использовал:
procedure Tmainform.WM_HotKeyHandler (var Message: TMessage);
 var
   idHotKey: integer; //идентификатор, но об этом - позже
   fuModifiers: word; //модификатор MOD_XX
   uVirtKey: word; //код виртуальной клавиши VK_XX
begin
 // параметры сообщения получаем так:
 idHotkey:= Message.wParam;
 fuModifiers:= LOWORD(Message.lParam);
 uVirtKey:= HIWORD(Message.lParam);

 //теперь - небольшая проверочка:
 if (fuModifiers = MOD_CONTROL) AND (uVirtKey = VK_RETURN) and (RxRichEdit.focused) then
 sendbutton.click();
 inherited;
end;


И в событие OnKeyDown, компонента RxRichEdit
keyid:=GlobalAddAtom("My Hotkey"); //создаем атом
RegisterHotKey(handle,keyid,MOD_CONTROL,VK_RETURN);


 
@!!ex ©   (2008-09-01 21:35) [1]

Так не юзай горячие клавиши. Юзай событие OnKeyDown.
ГОрячие клавиши тут нафигш не сплющились...
Они как раз нужны, когда надо реагировать на нажатие во всей системе...


 
Age   (2008-09-01 21:38) [2]

Я именно так и начал, но мне необходимо именно Ctrl+Enter как можно это отследить? Получать код не помогает и использование виртуальные клавиши то же не получилось?!


 
MsGuns ©   (2008-09-01 22:36) [3]

TAction ?


 
Loginov Dmitry ©   (2008-09-01 22:52) [4]

> Существует проблема с горячими клавишами, дело в том что
> мне необходимо, что бы выполнялись определенные действия
> при нажатие на клавиши ctrl+Enter. Все бы ни чего, нашел
> код все работает, но проблема в том, перехватываются во
> всем приложениях. Вопрос как можно реализовать так, чтобы
> выполнялось только, когда курсор расположен в моем приложений
> в RxRichEdit?


Обычно проблема как раз возникает на глобальном перехвате. На перехвате в рамках своего приложения все просто, все в твоих руках. Обычный KeyDown на ричедите отлично справляется, ровно как и TAction.
Пример:

procedure TForm1.RichEdit1KeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
 if (ssCtrl in Shift) and (Key = VK_RETURN) then
 begin
   //
 end;
end;


 
Age   (2008-09-01 23:41) [5]

Loginov Dmitry ©   (01.09.08 22:52) [4]

Большое спасибо о мастер!!!
Всем спасибо кто пытался помочь


 
Германн ©   (2008-09-02 01:29) [6]


> нашел код все работает, но

А не надо искать код. Надо читать и учить.


 
@!!ex ©   (2008-09-02 08:38) [7]

> [5] Age   (01.09.08 23:41)

Это просто реализация того, что я написал в [1].
Почему бы не залезть в хелп и не посмотреть описание параметров метода??


 
Slym ©   (2008-09-02 13:54) [8]

Nный раз читаю тему топика и думаю что очередной спам покно-клавиш :) enlarge your keyboard



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

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

Наверх




Память: 0.49 MB
Время: 0.023 c
1-1199544751
Wolf
2008-01-05 17:52
2008.10.12
Перевод функций на asm для ускорения работы


2-1220268091
workbench
2008-09-01 15:21
2008.10.12
Запрет закрытия консольного окна


15-1219352572
Германн
2008-08-22 01:02
2008.10.12
Вопрос к тем, кому за 50


1-1199993925
kilonet
2008-01-10 22:38
2008.10.12
Создание отчёта


15-1217308956
Наиль
2008-07-29 09:22
2008.10.12
За программы с открытым исходным кодом дают не плохие деньги