![]() |
Tastaturabfrage
Ich möcht in einer schleife durchgehend abfragen, ob bestimmte Tasten gedrückt werden. (w, a, s, d) Dann soll eine aktion passieren. Wie geht diese Tastaturabfrage?
|
Re: Tastaturabfrage
if GetAsyncKeyState(Hier Tastenname)<>0 then...
die tastennamen sind recht einfach rauszufinden: a=#65, b=#66, c=#67 usw. wenn mich nicht alles täuscht sollte das stimmen.. |
Re: Tastaturabfrage
willst du bewusst nicht die Ereignisse OnKeyDown, OnKeyUp etc. nutzen oder sind diese dir bisher nur unbekannt?
@dajuhsa: Deine Lösung ist falsch. Schau dir mal die Hilfe zu GetAsyncKeyState an. Da wirst du feststellen das du auch <> 0 zurück bekommst wenn die Taste seit dem letzten aufruf gedrückt wurde etc. |
Re: Tastaturabfrage
naja, bei mir klappt das meistens recht gut. z.B. für Bewegung auf Tastendruck.
Aber ich weiß ja nicht was PetBurki bezwecken will.. |
Re: Tastaturabfrage
ich hab davon gar keine Ahnung. Ich bin noch ein ziemlicher Anfänger, da ichs nur in der Schule lerne und auch erst seit diesem schuljahr.
Ich will einfach nur Tasten abfragen können, weil es mich interessiert, wie das geht. Dann soll halt eine Aktion, die ich mir dann ausdenke und programmiere passieren. |
Re: Tastaturabfrage
anstelle eine Schleife ist es empfehlenswerter die Ereignisse zu nutzen.
Setze dazu die Eigenschaft "KeyPreview" des Formulares auf True und Nutzde die Ereignisse OnKeyDown und OnKeyUp des Formulares. Sobald eine Taste gedrückt wird, wird das Ereignis ausgelöst. |
Re: Tastaturabfrage
ich hätte aber eigentlich gerne, dass ich bestimmte Tasten mit bestimmten Ereignissen belegen kann
|
Re: Tastaturabfrage
Und was hindert Dich daran?
Delphi-Quellcode:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin case Key of 'a': Button1Click(Sender); 'w': Button2Click(Sender); 's': Button3Click(Sender); 'd': Button4Click(Sender); end; end; |
Re: Tastaturabfrage
kannst du doch - frag dann einfach im OnKeyDown ab welche Taste gedrückt wurde (die Taste welche gedrückt wurde wird mit übergeben).
Delphi-Quellcode:
@daddyh: KeyPress ist die falsche Methode da man dort zwischen "A" und "a" unterscheiden muss weil eben nicht die Taste übergeben wird sondern der charakter.
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin if Key = VkKeyScan('a') then caption := 'toll es wurde a gedrückt' else Key = VkKeyScan('w') then caption := 'es wurde w gedrückt'; end; |
Re: Tastaturabfrage
Das weiß ich auch. Kann doch gewollt sein :mrgreen:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:50 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 by Thomas Breitkreuz