Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.10.12;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.05 c
2-1220510700
workbench
2008-09-04 10:45
2008.10.12
настройки proxy-сервера из браузера


15-1219142824
Vlad Oshin
2008-08-19 14:47
2008.10.12
откомпилируйте, пожалуйста, чему у вас получилось = i?


4-1197466196
OKir
2007-12-12 16:29
2008.10.12
Запрет отключения Num Lock


1-1200175909
istok
2008-01-13 01:11
2008.10.12
Совпадение PID ов в разных сессиях...


15-1219304588
TRSteep
2008-08-21 11:43
2008.10.12
vbs скрипт и принтеры





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский