Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.013 c
2-1214920523
Pasha L
2008-07-01 17:55
2008.08.03
Как узнать глобальные координаты контрола ?


2-1215070574
megavolt
2008-07-03 11:36
2008.08.03
Parsing Squid access.log


2-1215350613
Сашик
2008-07-06 17:23
2008.08.03
Удаление множества записей (SQL, Access)


3-1203418842
well
2008-02-19 14:00
2008.08.03
ADO. Не выполняются изменения в таблице


2-1214880947
Alexey.sh
2008-07-01 06:55
2008.08.03
Проблема с модулем dialogs.pas




   Наверх