Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Tastaturabfrage (https://www.delphipraxis.net/93490-tastaturabfrage.html)

PetBurki 6. Jun 2007 18:54


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?

dajuhsa 6. Jun 2007 18:56

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..

SirThornberry 6. Jun 2007 18:56

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.

dajuhsa 6. Jun 2007 19:00

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..

PetBurki 6. Jun 2007 19:02

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.

SirThornberry 6. Jun 2007 19:05

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.

PetBurki 6. Jun 2007 19:11

Re: Tastaturabfrage
 
ich hätte aber eigentlich gerne, dass ich bestimmte Tasten mit bestimmten Ereignissen belegen kann

DeddyH 6. Jun 2007 19:20

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;

SirThornberry 6. Jun 2007 19:23

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:
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;
@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.

DeddyH 6. Jun 2007 19:30

Re: Tastaturabfrage
 
Das weiß ich auch. Kann doch gewollt sein :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 Uhr.
Seite 1 von 3  1 23      

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