![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Горячие клавиши для меню [Delphi 5, Windows]
Kirill © (2002-08-18 11:34:00)Посмотрел пример в поставке с Kol.
Там есть такие строки:
MainMenu.ItemAccelerator[ 1 ] := MakeAccelerator( FCONTROL or FVIRTKEY, Word("1") );
MainMenu.ItemAccelerator[ 2 ] := MakeAccelerator( FCONTROL or FVIRTKEY, Word("2") );
А как сделать также, но только для букв. И чтобы Ctrl+Nне отличалась от Ctrl+n.
MainMenu.ItemAccelerator[ 1 ] := MakeAccelerator( FCONTROL or FVIRTKEY, Word("n") ); //не работает
Vladimir Kladov (2002-08-20 10:21:00) [1]
> Kirill © (18.08.02 12:53)
> Это наверное опять MCK? Почему все так любят MCK? Я пишу в чистом KOL. Мне проще написать в KOL, чем с использованием MCK.
На MCK не пишут, а тыкают мышкой. MCK сам пишет.
> Вопрос открыт.
> Кстати, программа на
> MainMenu1.ItemAccelerator[ 2 ] := MakeAccelerator( FVIRTKEY or FCONTROL, $4E );
> MainMenu1.ItemAccelerator[ 3 ] := MakeAccelerator( FVIRTKEY or FCONTROL, $4D );
> выполняет одно и тоже действие "Окрыть", хотя на другом должна выполнять "Сохранить" (во всяком случае так задумано, код обработки
> меню правилен, если использовать мышь. Проблема в горячих
> клавишах).
У меня так не получилось.
> Mhorse © (18.08.02 20:24)
> Товарищи, пишите как можно проще! Берете событие OnChar формы
Ну, тогда лучше в OnKeyDown. Там больше возможностей, да и проверять
не особенно нужно.
if GetKeyState( VK_CONTROL ) < 0 then
case Key of
VK_F1: ...
VK_RETURN: ...
VK_SPACE: ...
end;
Mhorse (2002-08-18 20:24:00) [2]Товарищи, пишите как можно проще! Берете событие OnChar формы
case Ord(Key) of
14: {Ctrl+n};
15: {Ctrl+o};
19: {Ctrl+s};
end;
Если вам нужны другие комбинации, то допишите перед end-ом
else ShowMessage(Int2Str(Ord(Key));
и понажимайте на нужные комбинации. В ответ увидите соответствующие им номера - подставляйте их в case.
Kirill (2002-08-18 12:53:00) [3]Это наверное опять MCK? Почему все так любят MCK? Я пишу в чистом KOL. Мне проще написать в KOL, чем с использованием MCK.
Вопрос открыт.
Кстати, программа на
MainMenu1.ItemAccelerator[ 2 ] := MakeAccelerator( FVIRTKEY or FCONTROL, $4E );
MainMenu1.ItemAccelerator[ 3 ] := MakeAccelerator( FVIRTKEY or FCONTROL, $4D );
выполняет одно и тоже действие "Окрыть", хотя на другом должна выполнять "Сохранить" (во всяком случае так задумано, код обработки меню правилен, если использовать мышь. Проблема в горячих клавишах).
Gandalf (2002-08-18 12:35:00) [4]Да.
Kirill (2002-08-18 12:03:00) [5]Result это форма?
Gandalf (2002-08-18 11:47:00) [6]Result.MainMenu1.ItemAccelerator[ 2 ] := MakeAccelerator( FVIRTKEY or FCONTROL, $4E );