![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
2 вопроса про клавиши [D6, WinME]
Коля © (2002-06-17 14:30:00)1:
У меня в программе в FormKeyDown читаются нажимаемые клавиши
if key = 37 then
....
if key = 38 then
....
Все бы хорошо, но если нажать обе кнопки вместе- не сработает не одна. Как сделать, чтобы в таком случае сработало оба if"а?
И другой вопрос- если на форме есть edit или memo, программа устанавливает на них фокус и FormKeyDown не реагирует на нажатия кнопок. Как вернуть фокус на форму?
Заранее спасибо!
rhf (2002-06-18 02:25:00) [1]тебе надо ловить onKeyDown и onKeyUp
Для каждой из стрелок держать статус - нажата ли она
в onKeyDown становиться нажатой
в onKeyUp - ненажатой
ну и в том же кейДаун смотришь нажаты ли сейчас обе кнопки
у меня все получилоь вроде......
Коля (2002-06-18 02:00:00) [2]извините, перепутал: вместо OnKeyDown использовать OnKeyPress?
Коля (2002-06-18 01:56:00) [3]я пробовал обя способа, но к сожалению ни один не работает... дело в том, что если нажать кнопки одновременно, значение KEY будет ИЛИ VK_Left ИЛИ VK_Up
может быть вместо OnKeyPress использовать OnKeyDown?
Alex is Fecit (2002-06-17 19:34:00) [4]тогда наверно: в первом if поставить дополнительный и во втором!
Anatoly Podgoretsky (2002-06-17 19:29:00) [5]Твое and не сработает, события нажатия клавиш поступают последовательно, а значит нужна история
Alex is Fecit (2002-06-17 19:21:00) [6]1) Проще - поставить вместо цифирек имена клавишь (
VK_Left, VK_Right) - так надежней и понятней! А не действует - нужно добавить еще одну проверку:(Key=VK_left)and(Key=VK_right)
2)см
> Lord Warlock © (17.06.02 14:33)
> 2. Поставь у формы KeyPreview в True
Коля (2002-06-17 17:31:00) [7]кнопки- стрелки..
код такой:
//left
if Key= 37 then
begin
if lastcom <> 0 then
begin
lastcom:= 0;
hero.picture:= hero0b.picture;
end;
DrawHero(key);
end;
//right
If Key= 39 then
begin
if lastcom <> 1 then
begin
lastcom:= 1;
hero.picture:= hero0.picture;
end;
DrawPers(key);
end;
end;
при нажатии обоих кнопок одновременно необходимо, чтобы программа выполнила DrawPers 2 раза.
Fly` (2002-06-17 14:38:00) [8]1. Расскажи чего за клавиши ? ... так интересней будет
2. Edit.OnKeyDown=FormKeyDown и на сколько я знаю Форма не получит фокуса, т.к. она не является наследником TWinControl.
Lord Warlock (2002-06-17 14:33:00) [9]2. Поставь у формы KeyPreview в True