Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Pause wie beim Sleep-Befehl (https://www.delphipraxis.net/139467-pause-wie-beim-sleep-befehl.html)

Delphi-Narr 29. Aug 2009 13:03


Pause wie beim Sleep-Befehl
 
Hi, ich hab jetzt in der Schule Delphi und bin eigentlich recht zufrieden mit meinem Programm. Mein Problem:

Ich habe eine Art Spiel programmiert und es werden erst ein paar Variablen zufällig gesetzt und dann sollen je nach Wert bestimmte Texte und Bilder erscheinen - Klappt auch prima.

Jetzt hab ich da ein Wort stehen, dahinter eine Variable auf einem Label und in der Mitte ein Bild, das sich verändert hat (Altes wurde versteckt, neues an gleicher Position gezeigt).

Danach verschwindet das neue Bild und das alte kommt zurück - soll auch so sein. Aber da ich ja eine gewisse Zeit brauche, um das Bild zu sehen und den Text zu lesen möchte ich ZWISCHEN Erscheinen und Verschwinden eine Pause von 5 Sekunden einfügen.

Habe mir gedacht, da reicht ja der Sleep(5000) Befehl.
Es dauert auch 5 Sekunden, dann wird das alte Bild wieder angezeigt, doch alle Label, die verändert wurden, und das neue Bild sind nicht da. Da wo sie sein sollten ist nur der Hintergrund. Nach 5 Sekunden kommen dann die Werte wieder, die schon 5 Sekunden vorher hätten angezeigt werden sollen und das alte Bild kehrt an seinen Platz zurück.

Was kann ich tun?!? :?:

LG

BUG 29. Aug 2009 13:07

Re: Pause wie beim Sleep-Befehl
 
Klingt so als könnte delaydelay (statt sleep) dir helfen.

MfG,
Bug

Delphi-Narr 29. Aug 2009 13:24

Re: Pause wie beim Sleep-Befehl
 
Danke schonmal.
Ich bekomme jedoch die Meldung bei

delay(5000) | Ist das so richtig?!? Ich hab mir mein Wissen hauptsächlich durch INet angereichert...


[Fehler] Unit4.pas(89): Undefinierter Bezeichner: 'delay'

Scheint wohl nicht so ganz zu stimmen...

LG

Helmi 29. Aug 2009 13:30

Re: Pause wie beim Sleep-Befehl
 
Hallo,

du brauchst natürlich auch noch den Code für Delay.
Delay ist keine Delphi-Board-eigene Funktion.

Hier mal der Link zu der Delay-Procedure link

Wolfgang Mix 29. Aug 2009 13:36

Re: Pause wie beim Sleep-Befehl
 
Hast du die procedure in dein Programm übernommen?

Delphi-Quellcode:
implementation

{$R *.dfm}
procedure delay(msec:longint);
var
  start,stop:longint;
begin
...

Gruß

Wolfgang

Delphi-Narr 29. Aug 2009 13:45

Re: Pause wie beim Sleep-Befehl
 
Hm, das versteh ich erlich gesagt nicht so ganz...
Warum klappt das mit dem Sleep denn nicht?
Die darf ja ruhig einfrieren, es soll ja 5 Sekunden lang nichts passieren, man soll nichts klicken können, einfach eine Art Standbild.

jfheins 29. Aug 2009 13:47

Re: Pause wie beim Sleep-Befehl
 
dann mach einmal vorher und einmal nachher ein application.processmessages() ;)

Der.Kaktus 29. Aug 2009 13:54

Re: Pause wie beim Sleep-Befehl
 
heute meinen netten tag habe *gg*

Delphi-Quellcode:
procedure Delay(msec: integer);
var start, stop: LongInt;
begin
  start := GetTickCount;
  repeat
    stop := GetTickCount;
    Application.ProcessMessages;
  until (stop-start)>=msec;
end;
;-)

Wolfgang Mix 29. Aug 2009 14:00

Re: Pause wie beim Sleep-Befehl
 
Bei mir funktioniert das so:


Delphi-Quellcode:
var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure Delay(Milliseconds: Integer);
var
  Tick: DWord;
  Event: THandle;
begin
  Event := CreateEvent(nil, False, False, nil);
  try
    Tick := GetTickCount + DWord(Milliseconds);
    while (Milliseconds > 0) and
          (MsgWaitForMultipleObjects(1, Event, False, Milliseconds, QS_ALLINPUT) <> WAIT_TIMEOUT) do
    begin
      Application.ProcessMessages;
      if Application.Terminated then Exit;
      Milliseconds := Tick - GetTickcount;
    end;
  finally
    CloseHandle(Event);
  end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
  showmessage('Bitte warten ...');
  delay(5000);
  showmessage('Das Waren ca. 5 secs');
end;

end.

Der.Kaktus 29. Aug 2009 14:08

Re: Pause wie beim Sleep-Befehl
 
Wolfgang? meins iss kuerzer :-D :cheers:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:42 Uhr.
Seite 1 von 2  1 2      

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