Любитель |
Отправлено: 18.02.2006, 22:45 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 53
|
Приведенный ниже фрагмент кода не работает
CODE |
void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key)
{
if (Key==VK_LEFT)//Стрелка влево
{
//..................
//..................
//..................
}
|
Программа даже не реагирует на нажатие клавишь влево, вправо, вверх, вниз. Как быть?
|
|
avb |
Отправлено: 18.02.2006, 23:11 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 10
|
В свойствах формы установи KeyPreview в true |
|
Любитель |
Отправлено: 19.02.2006, 17:32 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 53
|
Установил-не помогает
|
|
olegenty |
Отправлено: 20.02.2006, 08:09 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
а при чём тут OnKeyPress??? хочешь стрелки, обрабатывай OnKeyDown. Разница между ними в том, что OnKeyPress суть WM_CHAR, а символа стрелки нет... , в то время как OnKeyDown суть WM_KEYDOWN — вот тут есть всё, что есть на клавиатуре...
|
|
Любитель |
Отправлено: 20.02.2006, 14:16 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 53
|
Спасибо. Да действительно OnKeyDown. Но теперь возник еще один вопрос: надо обрабатывать нажатия сразу 2-х клавиш. Например стрелка вверх и стрелка вправо.
CODE |
if (Key==VK_UP&&Key==VK_RIGHT)
{
//......................................
} |
Это не работает
|
|
olegenty |
Отправлено: 20.02.2006, 14:33 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
естественно не работает. событие возникает ПРИ НАЖАТИИ. и тебе нужно проверить состояние других интересующих клавишь, посредством GetKeyState для каждой интересующей, либо GetKeyboardState — для всей клавиатуры целиком.
|
|