![]() |
Verbleibende Zeit anzeigen
Ich habe einen Timer, Timer1. Der hat die Intervall 6000 (60s) Der läuft ab.Und ich will die Verbleibende Zeit in einem Label angezeigt bekommen, das ist aber kein Problem. Ich möchte wissen, wie ich die Verbleibende Zeit herausfinde. Kann mir einer helfen?
|
Re: Verbleibende Zeit anzeigen
:hi:
eine direkte funktion/befehl kenne ich spontan nicht, aber du kannst auch einfach einen 2. timer erstellen, welcher dann einfach ein label oder einen wert jede sekunde aktualisiert, sozusagen parallel zu dem eigentlich ablaufenden. also das ist die noob-lösung, sowas mach ich immer! :) funktionalität reicht mir :thumb: :mrgreen: :hi: |
Re: Verbleibende Zeit anzeigen
hallo,
zeig mal ein bisschen code... |
Re: Verbleibende Zeit anzeigen
Zitat:
@Zecke, danke. Aber wie lese ich die Verbleibende Zeit dann aus dem Raus? |
Re: Verbleibende Zeit anzeigen
Du könntest z.B. den Timer auf 1135 ms stelle, und dann sowas machen:
Delphi-Quellcode:
;)
var
Zeit: Integer; ... // Timer-Prozedur: dec (Zeit); LabelX.Caption := inttostr ('noch genau ' + zeit + ' tail''sche Zeiteinheiten'); if Zeit = 0 then begin TimerY.Enabled := False; // ... end; |
Re: Verbleibende Zeit anzeigen
Zitat:
|
Re: Verbleibende Zeit anzeigen
Zitat:
Delphi-Quellcode:
@jfheins: Das geht nicht, der Meldet mir:
procedure TForm1.Timer1Timer(Sender: TObject);
begin //Nach einer Minute das Memo sperren Memo1.ReadOnly := True; Label2.Caption := 'Zeit abgelaufen'; Label3.Visible := False; //gezählte Zeichen auf einem Label ausgeben lblZeichen.Caption := IntToStr(Length(Memo1.Text) - 2 * Memo1.Lines.Count); end; [Error] UAnschlag.pas(72): ',' or ':' expected but '(' found |
Re: Verbleibende Zeit anzeigen
Zitat:
Ach ja, sorry, muss
Delphi-Quellcode:
heißen, aber darauf müsste man noch selber kommen ... ;)
LabelX.Caption := 'noch genau ' + inttostr (zeit) + ' tail''sche Zeiteinheiten';
|
Re: Verbleibende Zeit anzeigen
Zitat:
dec (Zeit); das ist die Zeile Auf das mit dem inttostr bin ich selber gekommen. |
Re: Verbleibende Zeit anzeigen
hi,
du könntest den timer intervall auf 1000 einstellen. dann bei einem label immer so eins minus rechnen:
Delphi-Quellcode:
wenn label1.caption = 0, dann wird das ereignis ausgelöst, dass du jede minute haben willst. natürlich musst du label1.caption wieder auf 60 stellen.
label1.caption := inttostr(strtoint(label1.caption)-1);
gruss urbanbruhin |
Re: Verbleibende Zeit anzeigen
Mhmm ... dan schreib halt zeit := zeit - 1; ;)
|
Re: Verbleibende Zeit anzeigen
Ich wäre für eine Endlosschleife (natürlich nur für 60s endlos), Timer sind hässlich :P .
|
Re: Verbleibende Zeit anzeigen
Zitat:
Wem willst du DAMIT die Rechenleistung klauen? :shock: Ein Timer ist imho nicht hässlich. Es ist einfach ein eigener Thread, der in einem voreingestellten Intervall immer das OnTimer-Event auslöst. Prinzipiell kann man es mit einer Schleife machen, aber: Entweder das Programm wird durch die ewige Schleife (und eventuelle Sleeps) ins "Stocken" gebracht (ich weiß grade nicht, wie Delay funktioniert...), oder man ruft immer "Application.ProcessMessages" auf und macht dann alles nur langsamer. Ein Thread ist für sowas imho genau das richtige (in diesem Fall in Form eines Timers) ;) |
Re: Verbleibende Zeit anzeigen
Zitat:
|
Re: Verbleibende Zeit anzeigen
mit GetTickCount bekommt man die Zeit in Millisekunden seit windowsstart.
Bevor du den Timer startest holst du dir also die Zeit und addierst deine spanne dazu.
Delphi-Quellcode:
und im OnTimer ereignis
EndTime := GetTickCount + 6000;
Timer1.Interval := 500; Timer1.Enabled := True;
Delphi-Quellcode:
und ein Timer ist keine Schleife in einem Thread. Das Timer-Event wird von Windows ausgelöst und es wird an die Anwendung eine Message geschickt. Alternativ kann man auch wenn man die Api-Funktion dafür nutzt direkt eine Funktionsadresse angeben so das keine Message geschickt wird...
var LTime: Cardinal;
begin LTime := GetTickCount; if LTime < EndTime then caption := 'verbleibend: ' + inttostr(EndTime - LTime) + ' sekunden' else begin Timer1.Enabled := False; caption := 'fertig'; end; |
Re: Verbleibende Zeit anzeigen
[quote="tail"]
Zitat:
Im Label5 soll einfach nur die Zeit angezeigt werden, bis der Timer abgelaufen ist |
Re: Verbleibende Zeit anzeigen
Delphi-Quellcode:
Procedure SetupTimer;
Begin Timer.Tag := 60; // So oft soll der Timer feuern, bis fettich Timer.Interval := 1000; // 1x pro Sekunde Timer.OnTimer := ShowRemaining; Timer.Enabled := True; End; Procedure TmyForm.ShowRemaining (Sender : TObject); Begin Timer.Tag := Timer.Tag - 1; If Timer.Tag = 0 Then Begin Timer.Enabled := False; // Timer Ausschalten Label2.Caption :='Fettich'; DoWhatever; End Else Label2.Caption := Format('Verbleibende Zeit %d Sekunden',[Timer.Tag]); End; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:31 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