Главная страница
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.018 c
15-1213188408
ПЛОВ
2008-06-11 16:46
2008.08.03
Печать на матричном принтере


2-1214910333
lead-in
2008-07-01 15:05
2008.08.03
разделитель в вещ-х числах


15-1213538221
AenorRisen
2008-06-15 17:57
2008.08.03
Центрирование повернутого текста


2-1214930400
Аврам
2008-07-01 20:40
2008.08.03
автомат обновление


2-1215189621
гыгы
2008-07-04 20:40
2008.08.03
Прозрачность