Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Was muss ich für OnKeyDown/Press in meinem Programm eingeben (https://www.delphipraxis.net/60564-muss-ich-fuer-onkeydown-press-meinem-programm-eingeben.html)

krish 9. Jan 2006 11:52


Was muss ich für OnKeyDown/Press in meinem Programm eingeben
 
Ich möchte in meinem Programm eine Repeat Until SChleife unterbrechen, wenn eine Taste gedrückt wird.
In turbo pascal funktioniert das mit keypressed. in delphi scheint es diese möglichkeit über OnKeyDown bzw. OnKeyPress zu geben. Allerdings weiß ich nicht was dazu im Programmteil deklariert werden muss und wie ich OnKeyDown einfüge (until OnKeyDown=A??). Vielleicht kann mir jemand helfen.
Danke.

chaosben 9. Jan 2006 12:00

Re: Was muss ich für OnKeyDown/Press in meinem Programm eing
 
Herzlich Willkommen in der DelphiPraxis! :hi:

Du kannst die OnKey-Ereignisse sehr leicht deklarieren, wenn du im Objektinspektor doppelt auf sie klickst.
Aber: Wenn du innerhalb deiner Schleife bist, wird dein Programm normalerweise nicht auf Tastatureingaben reagieren, da es voll mit der Schleife zu tun hat. Deshalb solltest du in der Schleife hin und wieder ein
Delphi-Quellcode:
Application.ProcessMessages
aufrufen. Damit erreichst du, das deine Anwendung auf die Events reagiert, die Windows ihr vermeldet hat. Dann kannst du in der OnKeyXXX-Procedure ein globales Flag setzen, um deine Schleife zu beeenden.

Das ist aber imho ein unschöne und unübersichtliche Programmier-Art. Besser wäre an dieser Stelle ein Thread, der dein Schleife bearbeitet.

//edit: Sinnvollerweise solltest du den Key-Paramter der in den OnKey-Routinen übergeben wird auserten. :stupid:

Daniel B 9. Jan 2006 12:52

Re: Was muss ich für OnKeyDown/Press in meinem Programm eing
 
Im OI noch KeyPreview auf True stellen.

konda 9. Jan 2006 13:50

Re: Was muss ich für OnKeyDown/Press in meinem Programm eing
 
Ich würde es so machen :roll:
Delphi-Quellcode:
private
    tastendruck: boolean;
...

procedure tform1.keypress(key: pchar);
begin
   if (key={die taste}'h') then tastendruck=true;
end;
...
repeat ... until (tastendruck=true);
[edit=r_kerber]Schließenden Delphi-Tag eingefügt. Mfg, r_kerber[/edit]

krish 9. Jan 2006 19:56

Re: Was muss ich für OnKeyDown/Press in meinem Programm eing
 
danke konda!
das ist genau das was ich wollte. ich danke auch chaosben und daniel für ihre antworten! so ich werde mich bestimmt noch mit irgend einer frage melden, ich arbeite nämlich an einem informatik-schul-projekt und da stößt man immer wieder auf fragen...


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:10 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-2025 by Thomas Breitkreuz