Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Pause methode bis tastendruck (https://www.delphipraxis.net/68656-pause-methode-bis-tastendruck.html)

bonanza 3. Mai 2006 13:33


Pause methode bis tastendruck
 
Hi,

ich wollte eine Pause in mein programm einbringen, die so lange anhalten soll, bis eine bestimmte Taste gedrück wird.

Bei Pascal ging es meines Wissens nach so (dann aber für eine beliebige Taste, was aber auch nicht so schlimme wäre):
Delphi-Quellcode:
repeat
until
keypress;
Gibt es eine Funktion o.ä. die soetwas in delphi bewirkt ?


danke schonmal im voraus

ManuMF 3. Mai 2006 13:40

Re: Pause methode bis tastendruck
 
Hallo,

DelayDelay könnte nützlich sein. Ich würde da empfehlen

Delphi-Quellcode:
var Stoppen: Boolean = false;

procedure Wieauchimmer;
begin
  repeat
    pause(500);
  until Stoppen;
end;

procedure TForm.FormKeyPress(Sender: TObject; var Key: Char);
begin
  Stoppen := true;
end;
Gruß,
ManuMF

bonanza 3. Mai 2006 14:09

Re: Pause methode bis tastendruck
 
erstmal danke...

ich hab das jetzt mal folgendermaßen implementiert:

Delphi-Quellcode:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
stoppen := true;
end;

procedure pausieren;
begin
  repeat
    sleep(500);
  until Stoppen;
end;

{..}

//im programm rufe ich dann pausieren auf:
pausiere;
Doch das programm friert komplett ein und das über mehrere sekunden, obwohl ich wie bekloppt auf die tastatur einhaue ^^

Klaus01 3. Mai 2006 14:14

Re: Pause methode bis tastendruck
 
Delphi-Quellcode:
 
procedure pausieren;
begin
  repeat
    sleep(500);        
    application.ProcessMessages;
  until Stoppen;
end;
oder anstelle von sleep delay verwenden.
delay findest Du in der CodeLib.

Grüße
Klaus

Pseudemys Nelsoni 3. Mai 2006 14:18

Re: Pause methode bis tastendruck
 
Delphi-Quellcode:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
stoppen := true;
end;

procedure pausieren;
begin
  while not stoppen do
  begin
    sleep(1);
    Application.ProcessMessages;
  end;
end;

{..}

//im programm rufe ich dann pausieren auf:
pausiere;

jim_raynor 3. Mai 2006 14:22

Re: Pause methode bis tastendruck
 
Zitat:

Zitat von Pseudemys Nelsoni
Delphi-Quellcode:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
stoppen := true;
end;

procedure pausieren;
var
  i: integer;
begin
  while not stoppen do
  begin
    sleep(1);
    Application.ProcessMessages;
  end;
end;

{..}

//im programm rufe ich dann pausieren auf:
pausiere;

Es reicht Application.ProcessMessages zu nutzen, da in ProcessMessages selbst die Zeitscheibe an andere Anwendungen abgegeben wird, sofern keine Nachrichten für die Anwendung da sind.

Delphi-Quellcode:
procedure pausieren;
var
  i: integer;
begin
  Stoppen:=false;
  while not stoppen do
    Application.ProcessMessages;
end;
Edit: Ach ja das Stoppen sollte auch auf false gesetzt werden ;)

bonanza 3. Mai 2006 15:02

Re: Pause methode bis tastendruck
 
danke ...

es stockt zwar jetzt nichtmehr, doch wird der danach folgende Teil der Procedur nicht bearbeitet...

z.b.:

Delphi-Quellcode:
showmessage('blubb');
pausieren;
showmessage('Blubb-teil2');

Klaus01 3. Mai 2006 15:12

Re: Pause methode bis tastendruck
 
und Du bist Dir sicher, das Du aus dem pausieren wieder herausgekommen bist?

Grüße
Klaus

jim_raynor 3. Mai 2006 15:13

Re: Pause methode bis tastendruck
 
Hast du KeyPreview beim Form auch auf true, da sonst das Formular von dem Tastendruck nichts mitbekommt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:00 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