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

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

Горячие клавиши для меню [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 );


Наверх

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