![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
как сделать так чтобы при нажатии определенной комбинации клавиш к примеру ctrl+y или при нажатии клавиш f1 f2 f3 программа совершала какое либо действие а именно выводила сообщение или открывала дочернее окно
помогите кто может плиз за ранее благодарен Последний раз редактировалось series777, 15.10.2009 в 13:34. |
|
#2
|
||||
|
||||
|
Для этого есть компонент ActionManaget
|
|
#3
|
|||
|
|||
|
а как именно это реализовать если не сложно можно привести пример плиз
|
|
#4
|
||||
|
||||
|
Кидаете на форму компонент ActionManager. Вызываете в его свойствах Customize. Добавляете в его список New Action. Для него в свою очередь в инспекторе объектов обрабатываете событие OnExecute а так-же устанавливает в свойстве ShortCut нужное сочетание клавиш.
Все |
|
#5
|
||||
|
||||
|
Цитата:
RegisterHotKey() |
|
#6
|
|||
|
|||
|
а можнопо подробнее насчет RegisterHotKey()
|
|
#7
|
||||
|
||||
|
Цитата:
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
id1 := GlobalAddAtom('Hotkey1');
RegisterHotKey(Handle, id1, VK_CONTROL, MapVirtualKey(VkKeyScan('y'),0));
....
end;Код:
private
id1: Integer;
procedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY;
{.....}
implementation
{$R *.DFM}
procedure TForm1.WMHotKey(var Msg: TWMHotKey);
begin
if Msg.HotKey = id1 then
begin
{что-то делаем в программе}
end
end;Подобным образом можно отлавливать всё, что угодно, любое сочетание клавиш. На всякий случай поясню некоторые функции: VkKeyScan('y') - определяет скан-код клавиши MapVirtualKey(VkKeyScan('y'),0) - переводит скан-код в виртульный код Константы типа VK_... описаны в модуле Windows. Вроде бы все. Если что-то непонятно - не стесняйтесь, спрашивайте. Попробую ответить более развернуто Чуть не забыл. При выключении программы необходимо снимать свои горячие системные клавиши функцией (для нашего примера): Код:
UnregisterHotKey(Handle, id1) Последний раз редактировалось Vlad55, 19.10.2009 в 12:34. |
|
#8
|
|||
|
|||
|
Vlad55 спасибо тебе за разьяснения
|
|
#9
|
|||
|
|||
|
а как можно перехватить нажатие клавиш в цикле?
while true do begin if klavisha=vk_F12 then break; end; вот примерно так мне нужно |