Jak wciskać dwa klawisze naraz?

0

Chcę napisać jakąś prostą gierę w Delphi, ale nie wiem do cholery jak wychwycić wciśnięcie wielu klawiszy naraz. Np. góra lewo... :-/

0

Chcę napisać jakąś prostą gierę w Delphi, ale nie wiem do cholery jak wychwycić wciśnięcie wielu klawiszy naraz. Np. góra lewo... :-/

Próbowałeś kody ASCII?

A jeżeli to nie pomoże to spróbuj w onKeyDown i wtedy:

if (key=vk_CursorLeft*) and (key=VK_CursorUp*) then coś tam...

  • nie jestem pewien co do nazewnictwa wirtualnego tych właśnie klawiszy.
0

Wykorzystaj OnKeyDown i OnKeyUp. W momencie gdy jest naciskany klawisz wywoływana jest procedura OnKeyDown. Wówczas zapamiętujesz, że taki klawisz został naciśnięty i dopóki nie zostanie on pluszczony nie zostanie wywołana procedura OnKeyUp, ale OnKeyDown może być ponownie wywołana, jeżeli naciśnięty zostanie drugi klawisz.

Przykład:

var
Form1: TForm1;
L, P, G: Boolean;

implementation

{$R *.dfm}

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
T: string;
begin
if Key = VK_LEFT then
L := True;
if Key = VK_RIGHT then
P := True;
if Key = VK_UP then
G := True;
T := '';
if L then
T := T + ' Lewo ';
if P then
T := T + ' Prawo ';
if G then
T := T + ' Góra ';
Caption := T;
end;

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
T: string;
begin
if Key = VK_LEFT then
L := False;
if Key = VK_RIGHT then
P := False;
if Key = VK_UP then
G := False;
T := '';
if L then
T := T + ' Lewo ';
if P then
T := T + ' Prawo ';
if G then
T := T + ' Góra ';
Caption := T;
end;

Pamiętaj tylko, że więcej niż 2 klawiszy na raz nie przechwycisz.

1 użytkowników online, w tym zalogowanych: 0, gości: 1