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

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

Горячие клавиши [D7, XP]


Age ©   (2008-09-01 21:15:00) 

Здравствуйте, многоуважаемые мастера 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);


Slym   (2008-09-02 13:54:00) [1]

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


@!!ex   (2008-09-02 08:38:00) [2]

> [5] Age   (01.09.08 23:41)

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


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


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

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


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

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

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


Loginov Dmitry   (2008-09-01 22:52:00) [5]

> Существует проблема с горячими клавишами, дело в том что
> мне необходимо, что бы выполнялись определенные действия
> при нажатие на клавиши 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;


MsGuns   (2008-09-01 22:36:00) [6]

TAction ?


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

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


@!!ex   (2008-09-01 21:35:00) [8]

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


Наверх

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