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


Автор: Samhein 25.1.2009, 18:09
У меня вот такой вопрос: например, при нажатии клавиши у меня обрабатывается перемещение компонента. При одном нажатии компонент немного перемещается. При зажатии он перемещается непрерывно. Но если нажать какую-нибудь другую клавишу, всё останавливается. Как сделать так, чтобы не было прерывания и клавиши не мешали друг другу? 

Автор: SamBellamy 25.1.2009, 21:31
у каждой клавиши есть два события Down - нажата Up - отпущена, с помощью функции GetKeyState можно посмотреть какая клавиша нажата/отпущена , также можно обрабатывать события onkeyup и onkeydown, скорей всего твоя проблема в непродуманном обработчике события.

Автор: Samhein 26.1.2009, 07:37
А можно, пожалуйста, пример?

Автор: SamBellamy 26.1.2009, 16:34
можно smile 
предположим будем двигать кнопку с именем button1 по нажатию кнопки Q
кинь на форму таймер, установи свойство interval = 50
в обработчике события onTimer напиши

if GetAsyncKeyState(byte('Q')) <> 0 then button1.Left := button1.Left + 1;

вот и всё.. функция GetAsyncKeyState возвращает значение отличное от нуля если указанная клавиша
была нажата после предыдущего вызова GetAsyncKeyState,  GetKeyState работает немного по другому.

Автор: Samhein 26.1.2009, 18:19
Спасибо огромное! =) Держи свой первый плюс! =)

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