Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > обработка событий по нажатию клавиши


Автор: superwolf 26.5.2008, 01:44
Возникла проблема. Объект двигается по форме при нажатии стрелок на клавиатуре. Передвижение происходит в обработчике события формы onKeyDown. Проблема заключается в следующем:
Когда нажимаю например стрелку влево происходит движение типа image1.left:=image1.left-10; т.е. объект сдвигается на 10 пикселей влево, если я продолжаю удерживать клавишу, команда движения повторяется быстро и подряд без пауз. Т.е. когда я нажал на клавишу - происходит сдвиг, потом пауза и дальше сдвиги без пауз. Как убрать эту паузу, которая возникает в движении объекта сразу после того как я нажал клавишу и событие обработалось 1 раз?

Автор: Frees 26.5.2008, 09:56
а если мессадж обрабатывать то такая же проблема

Код

procedure KeyDown(var Msg: TMessage); message WM_KEYDOWN;

Автор: Snowy 26.5.2008, 10:52
Ну правильно.
Так в винде и сделано.
Зайди в панели управления в настройки клавиатуры - там прописано время для первого нажатия и повторов.
Если хочешь определённый период - сделай таймер и проверяй там состояние кнопки через GetKeyState.
Ну а частоту такой проверки закладывай, разумеется, в интервал таймера.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)