AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

tastendrücke reaktivieren

Ein Thema von Noobinator · begonnen am 31. Mär 2007 · letzter Beitrag vom 1. Apr 2007
Antwort Antwort
Noobinator

Registriert seit: 9. Mai 2006
147 Beiträge
 
Delphi 7 Personal
 
#1

tastendrücke reaktivieren

  Alt 31. Mär 2007, 14:20
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:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 Form1.OnKeyDown:=NIL;
 machwas
 form1.Onkeydown:= ????
end;
was muss hier hin damit ich die tastendrücke wieder abfangen kann?
oder kann ich das auch ganz anderst realisieren?
einfach

Key:=vk_Null geht nicht, da er ja dennoch in die keydown procedure reingeht.
  Mit Zitat antworten Zitat
Noobinator

Registriert seit: 9. Mai 2006
147 Beiträge
 
Delphi 7 Personal
 
#2

Re: tastendrücke reaktivieren

  Alt 1. Apr 2007, 12:26
*push*
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#3

Re: tastendrücke reaktivieren

  Alt 1. Apr 2007, 12:30
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;
Lukas Erlacher
  Mit Zitat antworten Zitat
Noobinator

Registriert seit: 9. Mai 2006
147 Beiträge
 
Delphi 7 Personal
 
#4

Re: tastendrücke reaktivieren

  Alt 1. Apr 2007, 12:37
Zitat von DGL-luke:
.....
Die idee hatte ich auch schon, aber diese Funktioniert nicht, da wenn die Tastendrücke in die Warteschlange gelegt werden die Procedure dennoch x-mal nacheinander ausgeführt wird, was sie aber nicht darf.

es dürfen wirklich keinerlei tastendrücke durchkommen.
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#5

Re: tastendrücke reaktivieren

  Alt 1. Apr 2007, 12:43
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.
  Mit Zitat antworten Zitat
Noobinator

Registriert seit: 9. Mai 2006
147 Beiträge
 
Delphi 7 Personal
 
#6

Re: tastendrücke reaktivieren

  Alt 1. Apr 2007, 12:52
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:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if bewegen then
  figur.bewege;
if gebiet then
  machwas;
end;
wenn ich jetzt einmal in das Event-Gebiet komme, soll sich die Figur was machen.
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.
  Mit Zitat antworten Zitat
Noobinator

Registriert seit: 9. Mai 2006
147 Beiträge
 
Delphi 7 Personal
 
#7

Re: tastendrücke reaktivieren

  Alt 1. Apr 2007, 14:07
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;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:00 Uhr.
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