| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 |
| можно предположим будем двигать кнопку с именем 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 |
| Спасибо огромное! =) Держи свой первый плюс! =) |