Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.011 c
2-1220801949
Начинающий1
2008-09-07 19:39
2008.10.12
Логарифм


4-1197392650
AngelXXX
2007-12-11 20:04
2008.10.12
Запустить программу с флехи и флеху отключить


2-1220546393
IvanIvan
2008-09-04 20:39
2008.10.12
TListView: переместить Items


2-1220417936
TRSteep
2008-09-03 08:58
2008.10.12
Отправка почты


2-1220447536
tropik
2008-09-03 17:12
2008.10.12
Как заинсталить компонент в Delphi 2 ?




   Наверх