Главная страница
    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
15-1213330824
Oracle_client
2008-06-13 08:20
2008.08.03
Oracle client 10


2-1214939991
Casper
2008-07-01 23:19
2008.08.03
прокрутка изображения в компоненте TImage


15-1213615001
wild
2008-06-16 15:16
2008.08.03
TDirectoryListBox


2-1214886546
DJ_UZer
2008-07-01 08:29
2008.08.03
Присваивания имен в цикле


2-1214955539
MN
2008-07-02 03:38
2008.08.03
изменения в Combobox





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