Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.068 Beiträge
Delphi 12 Athens
|
AW: mehrere Key-Down Erreignisse gleichzeitig ausführen
12. Dez 2011, 10:34
Man kann auch OnKeyDown/OnKeyUp verwenden.
Delphi-Quellcode:
type
TForm6 = class(TForm)
Timer1: TTimer;
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure Timer1Timer(Sender: TObject);
private
{ Private-Deklarationen }
FTasteRunter, FTasteHoch, FTasteLinks, FTasteRechts, FTasteA: Boolean;
public
{ Public-Deklarationen }
end;
procedure TForm6.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
case Key of
VK_UP: FTasteHoch := True;
VK_DOWN: FTasteRunter := True;
VK_LEFT: FTasteLinks := True;
VK_RIGHT: FTasteRechts := True;
Ord('A'): FTasteA := True;
end;
end;
procedure TForm6.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
case Key of
VK_UP: FTasteHoch := False;
VK_DOWN: FTasteRunter := False;
VK_LEFT: FTasteLinks := False;
VK_RIGHT: FTasteRechts := False;
Ord('A'): FTasteA := False;
end;
end;
procedure TForm6.Timer1Timer(Sender: TObject);
begin
if FTasteHoch then
...
if FTasteA then
...
end;
Delphi-Quellcode:
type
TForm6 = class(TForm)
Timer1: TTimer;
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure Timer1Timer(Sender: TObject);
private
{ Private-Deklarationen }
FTasten: array[Word] of Boolean;
public
{ Public-Deklarationen }
end;
const
VK_A = Ord(A);
procedure TForm6.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
FTasten[Key] := True;
end;
procedure TForm6.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
FTasten[Key] := False;
end;
procedure TForm6.Timer1Timer(Sender: TObject);
begin
if FTasten[VK_UP] then
...
if FTasten[VK_A] then
...
end;
PS: Wenn man eine Taste zwischen zwei GetKeyState-Aufrufen drückt und wieder loslässt oder loslässt und wieder drückt, dann wird dieser Tastendruck übersehn.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
Geändert von himitsu (12. Dez 2011 um 10:36 Uhr)
|