![]() |
tastendrücke reaktivieren
hi: doch noch ne Frage.
ich habe ein Programm in dem ich während eine Procedure läuft alle tastendrücke daktivieren muss. denn meine Procedure ist in dem onkeydown ereigniss, und wenn ich während der Procedure wieder eine Taste Drücke fängt die Procedure von vorne an. also habe ich bisher:
Delphi-Quellcode:
was muss hier hin damit ich die tastendrücke wieder abfangen kann?
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin Form1.OnKeyDown:=NIL; machwas form1.Onkeydown:= ???? end; oder kann ich das auch ganz anderst realisieren? einfach
Delphi-Quellcode:
geht nicht, da er ja dennoch in die keydown procedure reingeht.
Key:=vk_Null
|
Re: tastendrücke reaktivieren
*push*
|
Re: tastendrücke reaktivieren
Hallo,
wenn deine procedure nicht asynchron läuft, sollte es absolut keinen unterschied machen - die tastendrücke werden in die nachrichten-warteschlange gepackt und werden dann nach ende deiner prozedur abgearbeitet. Ansonsten deklariere eine (form-)globale Boolean-Variable "Working" und mach es so:
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin if not working then begin working := true; machwas; working := false; end; end; |
Re: tastendrücke reaktivieren
Zitat:
es dürfen wirklich keinerlei tastendrücke durchkommen. |
Re: tastendrücke reaktivieren
Stuß oder feiner ausgedrueckt du verfolgst den falschen Ansatz.
Einfach ein Flag am Anfang der Prozedur abfragen und setzen setzen das besagt das die Prozedur schon gelaufen ist. Danach kann man die Taste so oft druecken wie man will und es passiert nichts mehr. |
Re: tastendrücke reaktivieren
also ich glaube ich sollte mein Problem mal näher erörtern.
Ich schreibe momentan ein Spiel. und in diesem Spiel kann man mit einer Spielfigur rumlaufen. wenn man jetzt in bestimmte gebiete kommt, dann soll eben was passieren. also habe ich auf das Onkeydown ereigniss gesetzt, mit dem sich meine Figur auch bewegt.
Delphi-Quellcode:
wenn ich jetzt einmal in das Event-Gebiet komme, soll sich die Figur was machen.
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin if bewegen then figur.bewege; if gebiet then machwas; end; wenn man jetzt allerdings während der procedure machwas wieder eine Taste drückt, ohne das sich die Figur bewegen konnte (Mauer,Wand etc..) dann kommt wieder die procedure machwas,und zwar sooft wie ich die taste gedrückt habe, und das möchte ich unterbinden. also einfach alle Tastendrücke Deaktivieren während die procedure läuft. allerdings soll die Figur nachdem die procedure lief wieder in das Gebiet gehen können, und es passiert wieder die procedure machwas. |
Re: tastendrücke reaktivieren
ok ich habe es^^
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin Form1.OnKeyDown:=NIL; machwas form1.Onkeydown:= formkeydown; //den Befehl habe ich gesucht end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22: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