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

Вниз

Несколько действий   Найти похожие ветки 

 
Mr.Vlad   (2007-02-17 23:51) [0]

Как в Delphi сделать так, что при нажатии на одну клавишу выполнялось действие, но не прерывалоь при нажатии другой клавиши(первая клавиша всё ещё нажата, т. е. нажаты две клавиши). Пожалуйста, помогите. Спасибо.


 
akaValerius ©   (2007-02-18 20:43) [1]

Используй onKeyDown а не onKeyPress


 
Домик   (2007-02-19 10:42) [2]


uses
 keyboard;

...

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 if IsKeyDown(VK_LEFT) then Form1.Left := Form1.Left - 1;
 if IsKeyDown(VK_RIGHT) then Form1.Left := Form1.Left + 1;
 if IsKeyDown(VK_UP) then Form1.Top := Form1.Top - 1;
 if IsKeyDown(VK_DOWN) then Form1.Top := Form1.Top + 1;
end;


 
Romm   (2007-02-27 13:17) [3]


> uses
>  keyboard;

при компиляции пишет: [Fatal Error] Unit1.pas(6): File not found: "keyboard.dcu"
Что делать?! Ну всмысли установить или его качать нужно?


 
Домик   (2007-02-27 13:26) [4]

По идеи ничего устанавливать не нужно. Какая версия Delphi?


 
Romm   (2007-02-27 13:28) [5]

Delphi7


 
deus krid   (2007-02-27 15:42) [6]

вроде этот Keyboard.pas вместе с GLScene поставляется =)
а вообще, юзать сей модуль не рекомендую - вон написал помню демку одну. дал другу. а у него антивирус забил, мол моя демка опасный вирус, перехватывает клавишные преривания =)


 
Домик   (2007-02-28 16:13) [7]

Проверил, и правда с GLScene. А я не знал.
Значит стандартными способами только как написали выше, через OnKeyDown...

> deus krid   (27.02.07 15:42) [6]

Может вообще тогда вообще никакие модули, работающие с устройствами ввода не использовать? А то еще напишет, что мышку приложение отлавливает или еще что-нибудь... :)


 
Belorus ©   (2007-02-28 16:27) [8]

Проверил, и правда с GLScene. А я не знал.

Да не знал.

Значит стандартными способами только как написали выше, через OnKeyDown...
Опять не знаешь. Чего же ты лажаешь так часто ?

GetKeyState,GetKeyboardState


 
Домик   (2007-02-28 21:38) [9]

> Belorus ©   (28.02.07 16:27) [8]

А я не заявлял что я тут гений...
Само утвердился? :)


 
Belorus ©   (2007-02-28 22:30) [10]

Зачем советовать если не знаешь ? :)


 
Домик   (2007-02-28 23:38) [11]

> Зачем советовать если не знаешь ? :)

Я написал пример, который как, оказалось, использует модуль GLScene, причем он не обозначен как все основные модули GLScene двумя заглавными GL, потому о его происхождении я не знал, и как-то даже не задумывался. Далее я лишь отметил, что я был не прав, и предположил что самый стандартный (простой и доступный) способ реализации, того, что нужно автору топика, можно сделать через OnKeyDown формы. :)

GetKeyState и GetKeyboardState - это уже WinAPI функции. Заглянул в keyboard.pas, там как раз они и используются...

Если переделать мною приведенный выше пример, следующим образом:

if GetKeyState(VK_LEFT) < 0 then Form1.Left := Form1.Left - 1;
...


То все должно работать без keyboard.



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

Форум: "Игры";
Текущий архив: 2008.08.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.007 c
6-1191474026
Rav
2007-10-04 09:00
2008.08.03
Какой компонент использовать для обмена данными в D7?


15-1213765055
Slider007
2008-06-18 08:57
2008.08.03
С днем рождения ! 18 июня 2008 среда


2-1215151616
Галинка
2008-07-04 10:06
2008.08.03
Преобразование типов


2-1214985863
Анна
2008-07-02 12:04
2008.08.03
В CreateProcess задать координаты и размеры приложения


15-1213964364
AEN
2008-06-20 16:19
2008.08.03
Автошколы в Москве





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский