Форум: "Начинающим";
Текущий архив: 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, компонента RxRichEditkeyid:=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