Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как лучше реализовать ввод горячих клавиш?


@!!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 должно тебя устроить:)


Наверх

Титульная страница Поиск, карта сайта Написать письмо