Форум: "Начинающим";
Текущий архив: 2008.12.07;
Скачать: [xml.tar.bz2];
ВнизГорячие клавиши для активного приложения Найти похожие ветки
← →
Zhekson (2008-10-27 13:28) [0]Прописанные мной, в примере, горячие клавиши исключают запуск нескольких экземпляров программы одновременно, т.к. во программах после первой не работают эти клавиши. Прим:
//В обработчике события OnCreate
//основной формы создаём горячую клавишу:
if not RegisterHotkey(Handle, 1, MOD_ALT or MOD_SHIFT, VK_F9) then
ShowMessage("Unable to assign Alt-Shift-F9 as hotkey.");
//В событии OnClose удаляем горячую клавишу:
UnRegisterHotkey( Handle, 1 );
//Добавляем обработчик в форму для сообщения
//WM_HOTKEY:
private // в секции объявлений формы
procedure WMHotkey( var msg: TWMHotkey ); message WM_HOTKEY;
procedure TForm1.WMHotkey( var msg: TWMHotkey );
begin
if msg.hotkey = 1 then
begin
if IsIconic( Application.Handle ) then
Application.Restore;
BringToFront;
end;
end;
Как сделать горячую клавишу на активное приложение, вне зависимости от контрола, который имеет фокус???
← →
www (2008-10-27 13:32) [1]TAction
← →
Leonid Troyanovsky © (2008-10-27 14:46) [2]
> Zhekson (27.10.08 13:28)
> Как сделать горячую клавишу на активное приложение, вне
> зависимости от контрола, который имеет фокус???
WM_HOTKEY приходит окну вне зависимости от его активности
и наличия (отсутствия) контрола в фокусе.
--
Regards, LVT.
← →
Zhekson (2008-10-27 15:13) [3]
> WM_HOTKEY приходит окну вне зависимости от его активности
> и наличия (отсутствия) контрола в фокусе.
это лишь подтверждает сказанные мной слова... меня же интересует как уйти от глобального параметра, чтобы использовать одну и ту же горячую клавишу, только в разных экземплярах одного приложения???
← →
Zhekson (2008-10-27 15:28) [4]
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (ssCtrl in Shift) and (chr(Key) in ["A", "a"]) then
ShowMessage("Ctrl-A");
end;
вот этот вариант впринципе подходит, но как заставить приложение реагировать на нажатие этих клавишь вне зависимости от того, какой контрол на форме Form1 имеет фокус???
← →
Zhekson (2008-10-27 15:28) [5]
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (ssCtrl in Shift) and (chr(Key) in ["A", "a"]) then
ShowMessage("Ctrl-A");
end;
вот этот вариант впринципе подходит, но как заставить приложение реагировать на нажатие этих клавиш вне зависимости от того, какой контрол на форме Form1 имеет фокус???
← →
Сергей М. © (2008-10-27 15:32) [6]Свойство TCustomForm.KeyPreview:
Specifies whether the form should receive keyboard events before the active control.
← →
Zhekson (2008-10-27 16:15) [7]Сергей М. © (27.10.08 15:32) [6]
спс. это то что нужно!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.12.07;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c