Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi 2 Tasten gleichzeitig!!! (https://www.delphipraxis.net/130174-2-tasten-gleichzeitig.html)

delphi-projekt 4. Mär 2009 14:46


2 Tasten gleichzeitig!!!
 
Hallo,

ich möchte für ein Autorennspiel-Programm, dass 2 Tasten gleichzeitig gedrückt und erkannt werden können.
So zu sagen z.B. vk_up und vk_left.

Wie ich die Tastatur anspreche weiß ich ja. Aber 2 Tasten gleichzeitig? Das muss doch gehen, da man bei jedem Rennspiel
diese Funktion nutzt.

Kann mir jemand biiiittttte helfen? Ich komme wirklich mit dem was in den Foren steht nicht weiter. :wall:

mr_emre_d 4. Mär 2009 14:59

Re: 2 Tasten gleichzeitig!!!
 
Hier im Forum suchenGetAsyncKeyState

delphi-projekt 4. Mär 2009 15:00

Re: 2 Tasten gleichzeitig!!!
 
:( Ich verstehe das nicht.
Sorry

Kannst du mir helfen?

taaktaak 4. Mär 2009 15:07

Re: 2 Tasten gleichzeitig!!!
 
Hier wird es vielleicht deutlicher: Codelib

himitsu 4. Mär 2009 15:25

Re: 2 Tasten gleichzeitig!!!
 
oder notfalls in Form.OnKeyDown die Tasten merken und in Form.OnKeyUp wieder vergessen.


Delphi-Quellcode:
Var TasteA, TasteB: Boolean;

Procedure TForm1.FormKeyDown(Sender: TObject; Var Key: Word; Shift: TShiftState);
  Begin
    If Key = 'a' Then TasteA := True;
    If Key = 'b' Then TasteB := True;
  End;

Procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
  Begin
    If Key = 'a' Then TasteA := False;
    If Key = 'b' Then TasteB := False;
  End;


...

If TasteA Then {was machen, wenn Taste A gedrückt ist}

Blackheart 4. Mär 2009 15:33

Re: 2 Tasten gleichzeitig!!!
 
Beispiel.
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if GetAsyncKeystate(VK_LEFT) < 0 then Shape1.Left:=Shape1.Left-2;
  if GetAsyncKeystate(VK_UP)   < 0 then Shape1.Top:=Shape1.Top-2;
  if GetAsyncKeystate(VK_RIGHT) < 0 then Shape1.Left:=Shape1.Left+2;
  if GetAsyncKeystate(VK_DOWN) < 0 then Shape1.Top:=Shape1.Top+2;
end;

mr_emre_d 4. Mär 2009 16:03

Re: 2 Tasten gleichzeitig!!!
 
Machs so
Delphi-Quellcode:
TForm1 = class..
  public
  ...
    Keys: Array[Byte] of Boolean;
    procedure RefreshKeys;
end;

--

procedure TForm1.RefreshKeys();
var
  i: Integer;
begin
  for i := 0 to $FF do
    Keys[i] := GetAsyncKeyState( i ) <> 0;
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  RefreshKeys;
end;

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  RefreshKeys;
end;

delphi-projekt 5. Mär 2009 20:18

Re: 2 Tasten gleichzeitig!!!
 
Danke für die Zahlreichen Antworten,

hat mir sehr geholfen.

LG


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:23 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz