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

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.012 c
2-1214904699
Skary
2008-07-01 13:31
2008.08.03
Звук


3-1200936819
azamatufa
2008-01-21 20:33
2008.08.03
BEFORE INSERT - Error! Field Must Have A Value


15-1213852980
Отличительный
2008-06-19 09:23
2008.08.03
Отличие приложения от программы


2-1215154573
lead-in
2008-07-04 10:56
2008.08.03
допустимое имя файла


2-1214886949
DJ_UZer
2008-07-01 08:35
2008.08.03
Как считать текстовый файл из интерната