Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1225273309
Iriss
2008-10-29 12:41
2008.12.07
Процедура внутри процедуры


15-1223209888
Dez3uk
2008-10-05 16:31
2008.12.07
таблицы в Word и Exel


15-1223022581
Vlad Oshin
2008-10-03 12:29
2008.12.07
Разыскивается документация/статьи по компонентам DevExpress


15-1223228797
dr_creigan
2008-10-05 21:46
2008.12.07
активация делфы


15-1223128705
Городской Шаман
2008-10-04 17:58
2008.12.07
Жалеете ли вы о том, что пошли работать в IT.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский