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