Горячие клавиши

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Горячие клавиши

Сообщение AlexGordon » 14.12.2010 20:54:11

Как сделать горячие клавиши типа F1, F9... или цифры?
И как делать горячими сочитания клавишь?
Например мне надо создать обработку:

Код: Выделить всё
if VK_KEY = Ctrl+f9 then begin
...trololo...
end;
AlexGordon
новенький
 
Сообщения: 28
Зарегистрирован: 07.12.2010 21:02:15

Re: Горячие клавиши

Сообщение Mr.Smart » 14.12.2010 21:28:59

Используйте TActionList.
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Горячие клавиши

Сообщение AlexGordon » 14.12.2010 22:14:40

Я думал об этом, но как там сделать вызов действия на клавишу?
AlexGordon
новенький
 
Сообщения: 28
Зарегистрирован: 07.12.2010 21:02:15

Re: Горячие клавиши

Сообщение Mr.Smart » 14.12.2010 23:16:57

Создаёте акшен и указываете шоткат.

Добавлено спустя 3 минуты 46 секунд:
Если нет возможности связать с TActionList, то можно в обработчике типа OnKeyDown выполнить следующие действия:
Код: Выделить всё
  if (ssCtrl in Shift) and (Key=VK_F1) then
   ShowMessage('Действие!');
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Горячие клавиши

Сообщение AlexGordon » 14.12.2010 23:27:15

Он почему-то считает даже VK_RETURN ошибкой...
AlexGordon
новенький
 
Сообщения: 28
Зарегистрирован: 07.12.2010 21:02:15

Re: Горячие клавиши

Сообщение Mr.Smart » 14.12.2010 23:29:26

подключаем модуль LCLTypes :wink:
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Горячие клавиши

Сообщение AlexGordon » 26.12.2010 22:26:41

Mr.Smart писал(а):подключаем модуль LCLTypes :wink:

Он такого не знает
AlexGordon
новенький
 
Сообщения: 28
Зарегистрирован: 07.12.2010 21:02:15

Re: Горячие клавиши

Сообщение Odyssey » 26.12.2010 22:29:04

LCLType
Odyssey
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.11.2007 17:32:24

Re: Горячие клавиши

Сообщение AlexGordon » 26.12.2010 22:34:03

О, спасибо!
AlexGordon
новенький
 
Сообщения: 28
Зарегистрирован: 07.12.2010 21:02:15

Re: Горячие клавиши

Сообщение modestusmunh » 18.09.2011 13:41:48

Можно поподробнее о горячих клавишах?
Нужно выполнить такие задания:
6. Двойной щелчок мыши или Alt-X или F10 закрывают форму (с запросом на разрешение).
7. Нажатие клавиш со стрелками сдвигает форму (в границах экрана)
8. Щелчок правой кнопки мыши сжимает форму на 5 пикселей со всех сторон. Щелчок правой кнопки мыши с нажатой клавишей Shift увеличивает форму на 5 пикселей во все стороны.

Что делаю для 6 задания:
*даблклик на событии OnKeyDown;
*в редакторе кода пишу:
Код: Выделить всё
procedure TForm1.FormKeyDown (Sender: TObject; var key:word; Shift:TShiftState);
begin
  if (key=ord('x')) and (ssAlt in Shift) then Close; {для того, чтобы спрашивало разрешение на закрытие необходимо создавать дочернюю форму? или есть вариант попроще?}
end;

Программа компилируется, запускается, но на Alt+X не реагирует. Что, собственно, не так? :(
PS С F10 разобрался.
modestusmunh
новенький
 
Сообщения: 13
Зарегистрирован: 07.09.2011 16:51:00

Re: Горячие клавиши

Сообщение Mr.Smart » 18.09.2011 15:30:31

Смотри компонент TActionList.
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Горячие клавиши

Сообщение modestusmunh » 18.09.2011 17:09:55

Mr.Smart спасибо, разобрался.
Объясните как 7 выполнить? Я надеюсь, не тривиально менять нач. координаты? И как реализовать перемещение в границах экрана?
modestusmunh
новенький
 
Сообщения: 13
Зарегистрирован: 07.09.2011 16:51:00


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15

Рейтинг@Mail.ru