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

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

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

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

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

Сообщение AlexGordon »

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

Код: Выделить всё

if VK_KEY = Ctrl+f9 then begin
...trololo...
end;
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Используйте TActionList.
AlexGordon
новенький
Сообщения: 28
Зарегистрирован: 07.12.2010 20:02:15

Сообщение AlexGordon »

Я думал об этом, но как там сделать вызов действия на клавишу?
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

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

Добавлено спустя 3 минуты 46 секунд:
Если нет возможности связать с TActionList, то можно в обработчике типа OnKeyDown выполнить следующие действия:

Код: Выделить всё

  if (ssCtrl in Shift) and (Key=VK_F1) then
   ShowMessage('Действие!');
AlexGordon
новенький
Сообщения: 28
Зарегистрирован: 07.12.2010 20:02:15

Сообщение AlexGordon »

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

Сообщение Mr.Smart »

подключаем модуль LCLTypes :wink:
AlexGordon
новенький
Сообщения: 28
Зарегистрирован: 07.12.2010 20:02:15

Сообщение AlexGordon »

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

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

Сообщение Odyssey »

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

Сообщение AlexGordon »

О, спасибо!
modestusmunh
новенький
Сообщения: 13
Зарегистрирован: 07.09.2011 16:51:00

Сообщение modestusmunh »

Можно поподробнее о горячих клавишах?
Нужно выполнить такие задания:
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 разобрался.
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Смотри компонент TActionList.
modestusmunh
новенький
Сообщения: 13
Зарегистрирован: 07.09.2011 16:51:00

Сообщение modestusmunh »

Mr.Smart спасибо, разобрался.
Объясните как 7 выполнить? Я надеюсь, не тривиально менять нач. координаты? И как реализовать перемещение в границах экрана?
Ответить