![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как лучше реализовать ввод горячих клавиш?
@!!ex © (2008-01-31 21:12:00)THotKey не подходит.
Он(например), не понимает такие комбинации как Ctrl+Alt+Space, Ctrl+Alt+Tab, клавишу Win не жует... и так далее.
Пока ничего умнее своего контрола придумать не могу...
@!!ex (2008-02-04 07:46:00) [1]> [7] Elec3C © (01.02.08 18:03)
>
> > @!!ex ©
>
> Я регистровал именно с помощью RegisterHotKey (см. [2]).
> Всё отлично работает.
Да при чем тут регистрация горячих клавиш????
> [5] @!!ex © (01.02.08 00:33)
> Atom кстати лучше всеже регистрировать, циферки 1, 2 и т.д.
> могут привести к неприятным проблемам...
> Проблема была не в том, чтобы зарегестрировать и отловить
> нажатие Хоткея. А в том, чтобы пользователь мог в настройках
> выбирать для команды нужную комбинацию клавиш.
> Проверил, все он понимает. Ты прям ркуками туда и вводи
> «Ctrl+Alt+Tab».
Это не удобно.
> [10] Skyle © (04.02.08 07:39)
Да. Сделал через два ComboBox'а. В одном список комбинаций (Ctrl+Alt+Shift, Ctrl+Shift, и т.д.) во втором - набор обычных клавиш.
Вроде удобно.
Skyle (2008-02-04 07:39:00) [2]
> Kolan © (01.02.08 18:10) [9]
Есть мнение, что он хочет чтобы компонент сам писал в себя то, что пользователь над ним нажал.
Kolan (2008-02-01 18:10:00) [3]> А в том, чтобы пользователь мог в настройках выбирать для
> команды нужную комбинацию клавиш.
Писать наследника и там переделать работу с хот кеями.
> Он(например), не понимает такие комбинации как Ctrl+Alt+Space,
> Ctrl+Alt+Tab
Проверил, все он понимает. Ты прям ркуками туда и вводи «Ctrl+Alt+Tab».
Elec3C (2008-02-01 18:06:00) [4]
> пользователь мог в настройках выбирать для команды нужную
> комбинацию клавиш
Выберет, сделаешь UnRegisterHotKey, а затем снова RegisterHotKey.
Elec3C (2008-02-01 18:03:00) [5]
> @!!ex ©
Я регистровал именно с помощью RegisterHotKey (см. [2]). Всё отлично работает.
ASoft (2008-02-01 17:27:00) [6]
> @!!ex © (31.01.08 21:12)
ТApplicationEvents?
@!!ex (2008-02-01 00:33:00) [7]Atom кстати лучше всеже регистрировать, циферки 1, 2 и т.д. могут привести к неприятным проблемам...
Проблема была не в том, чтобы зарегестрировать и отловить нажатие Хоткея. А в том, чтобы пользователь мог в настройках выбирать для команды нужную комбинацию клавиш.
@!!ex (2008-02-01 00:32:00) [8]и что это?
Owa (2008-02-01 00:19:00) [9]ошибочка =))
**
if not RegisterHotkey(Handle, 2, MOD_ALT or MOD_SHIFT, VK_F9) then
ShowMessage('WIN + CONTROL + TAB reg - failure');
if not RegisterHotkey(Handle, 2, MOD_WIN or VK_CONTROL, VK_TAB ) then
ShowMessage('WIN + CONTROL + TAB reg - failure');
Owa (2008-02-01 00:17:00) [10]тип того...
public
procedure WMHotkey( var msg: TWMHotkey ); message WM_HOTKEY;
procedure Form.WMHotkey( var msg: TWMHotkey );
begin
if msg.hotkey = 1 then
begin
end;
if msg.hotkey = 2 then
begin
end;
end;
procedure Form.FormCreate(Sender: TObject);
begin
if not RegisterHotkey(Handle, 1, MOD_ALT or MOD_SHIFT, VK_F9) then
ShowMessage('Alt + Shift + F9 reg - failure');
if not RegisterHotkey(Handle, 2, MOD_ALT or MOD_SHIFT, VK_F9) then
ShowMessage('WIN + CONTROL + TAB reg - failure');
end;
procedure Form.FormClose(Sender: TObject; var Action: TCloseAction);
begin
UnRegisterHotkey( Handle, 1 );
UnRegisterHotkey( Handle, 2 );
end;
Ник (2008-01-31 21:24:00) [11]Если только в приложение, то MainMenu должно тебя устроить:)