Как отловиь системные клавиши в Lazarus'е

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

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

Ответить
The_Eternal_Student
незнакомец
Сообщения: 4
Зарегистрирован: 11.04.2009 11:02:54
Откуда: Россия, Город Трёх Шурупов

Как отловиь системные клавиши в Lazarus'е

Сообщение The_Eternal_Student »

Для удобства в моей программе хотел использовать клавиши "влево", "вправо" и т.д. Но, к сожалению, событие OnKeyPress не отлавливают данные клавиши. Проверял таким способом:

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

procedure TForm1.FormKeyPress(Sender: TObject; var Key: char);
begin
  ShowMessage(IntToStr(ord(Key)));
end;

Нашел как это реализовать на Delphi. Вот код:

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

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_UP then
  Dec(PosY, 5);
  if Key = VK_DOWN then
  Inc(PosY, 5);
  if Key = VK_LEFT then
  Dec(PosX, 5);
  if Key = VK_RIGHT then
  Inc(PosX ,5);
  OnPaint(Sender);
end;

Но он не рабочей в Lazarus'e. Есть ли возможность, наподобие в Delphi, использовать эти клавиши("влево" и т.п.)?
P.S. Мне нужно, чтобы программа работала в Window's
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

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

В чём проблемма?
подключи модуль Windows там определены все константы вида VK_... и многие другие.
The_Eternal_Student
незнакомец
Сообщения: 4
Зарегистрирован: 11.04.2009 11:02:54
Откуда: Россия, Город Трёх Шурупов

Сообщение The_Eternal_Student »

Спасибо, всё заработала :D
Павел Ишенин
постоялец
Сообщения: 475
Зарегистрирован: 24.03.2007 09:16:52

Сообщение Павел Ишенин »

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

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

Павел Ишенин писал(а):Не надо никакого модуля Windows. Добавить LCLType в модуль - там есть VK_UP и прочие.

Если ПО пишется чисто под винду почему бы и недобавить :wink:
Аватара пользователя
Attid
долгожитель
Сообщения: 2589
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

чтоб через неделю не отвечать на вопрос как это сделать в линуксе

Добавлено спустя 1 минуту 23 секунды:
и вообще за такой вопрос
The_Eternal_Student писал(а):Но он не рабочей в Lazarus'e.


бить надо. где текст ошибки ?
The_Eternal_Student
незнакомец
Сообщения: 4
Зарегистрирован: 11.04.2009 11:02:54
Откуда: Россия, Город Трёх Шурупов

Сообщение The_Eternal_Student »

Чтобы не били :) :
Lazarus писал(а): Error: Identifier not found "VK_UP"
Павел Ишенин
постоялец
Сообщения: 475
Зарегистрирован: 24.03.2007 09:16:52

Сообщение Павел Ишенин »

Ну так с LCLType в uses такой ошибки нет?
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

А чтобы не добавлять никаких модулей, можно добавить в прогу четыре константы:

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

  VK_LEFT = 37;
  VK_UP = 38;
  VK_RIGHT = 39;
  VK_DOWN = 40;

или вообще использовать цифры. :)
The_Eternal_Student
незнакомец
Сообщения: 4
Зарегистрирован: 11.04.2009 11:02:54
Откуда: Россия, Город Трёх Шурупов

Сообщение The_Eternal_Student »

Да и с модулем LCLType программа прекрасно работает, а вот использовать константы (или цифры) не имеет смысла, так как забивать такими вещами голову не стоит. Да? :wink:

Reply: Вам виднее :) (так как не программист, я вас не пойму, и тем более в деньги не уперается)
Последний раз редактировалось The_Eternal_Student 11.04.2009 19:18:12, всего редактировалось 1 раз.
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

The_Eternal_Student писал(а):Да?

Нет. :) Вы ведь должны знать или названия констант или их значения, чтобы выполнить поставленную задачу. Если не знать в каком направлении искать, деньги быстро кончутся... :)
Ответить