![]() |
Problem mit "Sleep"-Anweisung
Hallo
ich habe ein Problem mit der Sleep-Anweisung. In meinem Programm, soll ein Label, das bei FormCreate auf visible := false gesetzt wird sichtbar gemacht werden. Aber nur für 2 Sekunden und dann wieder unsichtbar werden. Ich habe es folgendermaßen versucht:
Delphi-Quellcode:
Das funktioniert aber irgendwie nicht. :gruebel: Das Label wird icht angezeigt.
label1.visible := true;
sleep(2000); label1.visible := false; Wenn ich zu Kontrollzwecken vor das Sleep eine Showmessage einbaue, dann wird das Label angezeigt, wahrscheinlich, weil dann die Sleep-Anweisung nicht unmittelbar hinter der visible := true Anweisung kommt. Kann mir jemand sagen warum das nicht funktioniert bzw. wie das funktioniert? Mit freundlichen Grüßen bender251 |
Re: Problem mit "Sleep"-Anweisung
Mach mal vor und hinter dem Sleep ein Application.ProcessMessages.
|
Re: Problem mit "Sleep"-Anweisung
Das funktioniert nicht weil sleep dein Programm ganz lahm legt. Lösung:
![]() |
Re: Problem mit "Sleep"-Anweisung
@Daniel B: Cooooool...............Vielen Dank für die Antwort. Klappt prima. :cheers:
Nur mal interessehalber: Was bewirkt dieses Application.Processmessages? Die Hilfe gibt da nicht so die Auskunft zu, wenn ich nichts übersehen habe. Gruß bender251 |
Re: Problem mit "Sleep"-Anweisung
Das unterbricht das Programm, damit Windows auf Ereignisse reagieren kann.
|
Re: Problem mit "Sleep"-Anweisung
Junge geht das heir schnell mit den Antworten. :thuimb:
Vielen Dank an alle. Gruß bender251 |
Re: Problem mit "Sleep"-Anweisung
Ähm, umgekehrt. Es unterbricht eine Routine im eigenen Programm, damit das eigene Programm dazu kommt die MessageLoop abzuarbeiten und so auf Nachrichten von Windows reagieren kann.
Wozu soll ich mein Programm unterbrechen, damit Windows auf Nachrichten reagiert? :mrgreen: |
Re: Problem mit "Sleep"-Anweisung
Liste der Anhänge anzeigen (Anzahl: 1)
Hi Luckie,
wieso soll das nicht funktionieren?
Delphi-Quellcode:
Procedure TForm1.Button1Click(Sender: TObject);
Begin Label1.Visible := True; Application.ProcessMessages; Sleep(2000); Label1.Visible := False; End;
Delphi-Quellcode:
Label1.Visible := True;
Application.ProcessMessages; Sleep(2000); Label1.Visible := False; Application.ProcessMessages; {nachfolgende Anweisungen} |
Re: Problem mit "Sleep"-Anweisung
Habe ich irgendwo, irgendwas geschrieben, dass was nicht funktionieren soll? Die Erklärung von the_master war nur verkehrtrum.
|
Re: Problem mit "Sleep"-Anweisung
Zitat:
|
Re: Problem mit "Sleep"-Anweisung
Jupp. Das war seine Version ohne Application.Processmessages und da ist es zutreffend.
|
Re: Problem mit "Sleep"-Anweisung
Ach so, dachte das war 'ne Antwort auf Daniel B's Post :oops:
|
Re: Problem mit "Sleep"-Anweisung
Als ich angefangen hatte, hatte er noch nicht gepostet.
|
Re: Problem mit "Sleep"-Anweisung
Moin Luckie,
Zitat:
Wenn das der Hauptthread des Programmes reagiert dieser für die angegebene Zeitspanne auf nichts mehr, abgespaltene Threads laufen aber weiter. [EDIT] Ausser sie greifen während des Sleep Intervalls auf Teile des Hauptthreads zu, z.B. per Synchronize, dann bleiben diese auch solange stehen und warten. [/EDIT] |
Re: Problem mit "Sleep"-Anweisung
Nun ja, ich wollte hier nicht noch mehr Verwirrung stiften. Wie du in dem Shellexcute Thread mit deinem letzten Posting. :roll:
|
Re: Problem mit "Sleep"-Anweisung
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
ich habe mir nicht die Mühe gemacht alle postings genau zu lesen, jedoch würde auch hier die TTimerThread class helfen.
Delphi-Quellcode:
procedure Form1.OnCreate;
var aTimer : TTimerThread; begin // dein Label ist schon sichtbar ! FTimer := TTimer.Create( 2000, OnTimer ); end; procedure Form1.OnTimer( Sender: TObject ); begin DeinLabel.Visible := False; if Sender is TTimerThread then TTimerThread( Sender ).Stop; // sonnst bist du hier alle 2sec ! // Nicht Free oder NilAndFree ! // FreeOnTerminate = True im Thread end; mfg Rumpi |
Re: Problem mit "Sleep"-Anweisung
Man könnte auch vor dem Sleep eine Form1.Refresh geben
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:39 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