Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.01;
Скачать: CL | DM;

Вниз

2 вопроса про клавиши   Найти похожие ветки 

 
Коля ©   (2002-06-17 14:30) [0]

1:
У меня в программе в FormKeyDown читаются нажимаемые клавиши
if key = 37 then
....
if key = 38 then
....

Все бы хорошо, но если нажать обе кнопки вместе- не сработает не одна. Как сделать, чтобы в таком случае сработало оба if"а?

И другой вопрос- если на форме есть edit или memo, программа устанавливает на них фокус и FormKeyDown не реагирует на нажатия кнопок. Как вернуть фокус на форму?
Заранее спасибо!


 
Lord Warlock ©   (2002-06-17 14:33) [1]

2. Поставь у формы KeyPreview в True


 
Fly` ©   (2002-06-17 14:38) [2]

1. Расскажи чего за клавиши ? ... так интересней будет
2. Edit.OnKeyDown=FormKeyDown и на сколько я знаю Форма не получит фокуса, т.к. она не является наследником TWinControl.


 
Коля ©   (2002-06-17 17:31) [3]

кнопки- стрелки..
код такой:
//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 раза.


 
Alex is Fecit   (2002-06-17 19:21) [4]

1) Проще - поставить вместо цифирек имена клавишь ( VK_Left, VK_Right) - так надежней и понятней! А не действует - нужно добавить еще одну проверку: (Key=VK_left)and(Key=VK_right)
2)см
> Lord Warlock © (17.06.02 14:33)
> 2. Поставь у формы KeyPreview в True



 
Anatoly Podgoretsky ©   (2002-06-17 19:29) [5]

Твое and не сработает, события нажатия клавиш поступают последовательно, а значит нужна история


 
Alex is Fecit   (2002-06-17 19:34) [6]

тогда наверно: в первом if поставить дополнительный и во втором!


 
Коля ©   (2002-06-18 01:56) [7]

я пробовал обя способа, но к сожалению ни один не работает... дело в том, что если нажать кнопки одновременно, значение KEY будет ИЛИ VK_Left ИЛИ VK_Up
может быть вместо OnKeyPress использовать OnKeyDown?


 
Коля ©   (2002-06-18 02:00) [8]

извините, перепутал: вместо OnKeyDown использовать OnKeyPress?


 
rhf ©   (2002-06-18 02:25) [9]

тебе надо ловить onKeyDown и onKeyUp
Для каждой из стрелок держать статус - нажата ли она
в onKeyDown становиться нажатой
в onKeyUp - ненажатой

ну и в том же кейДаун смотришь нажаты ли сейчас обе кнопки
у меня все получилоь вроде......



Страницы: 1 вся ветка

Текущий архив: 2002.07.01;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.021 c
3-872
малой
2002-06-05 11:57
2002.07.01
Виртуальное поле


4-1259
XEL
2002-04-26 23:27
2002.07.01
Как определить серийный номер ЧИСТОГО cd-r диска


3-900
maxim2
2002-06-07 14:51
2002.07.01
DBGrid перекрывает MDichild форму


3-928
Proton
2002-05-25 23:59
2002.07.01
SQL запрос


4-1250
Kuha Kaladze
2002-04-30 12:16
2002.07.01
Как на API в Delphi программировать socket