Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.07.01;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.006 c
3-899
Darts
2002-06-07 15:12
2002.07.01
Перехват ошибки


4-1240
Фантом
2002-04-30 09:11
2002.07.01
Повторюсь


3-914
DAK
2002-06-07 14:54
2002.07.01
Автоинкрементные поля


1-1093
Aleksandr
2002-06-19 12:25
2002.07.01
Расскажите подробнее о Coinitialize(nil)


1-1043
Arkan
2002-06-17 18:25
2002.07.01
график





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский