![]() |
Timer.Interval in Minuten ablaufend anzeigen
Hallo,
ich möchte, dass in einer Label.Caption die Minuten stehen wie lange es noch dauert, bis das OnTimer-Event ausgelöst wird. Also, dass ich die Millisekunden * 60 nehmen muss weiß ich schon :D Wie kann ich die Minuten ablaufend darstellen? |
Re: Timer.Interval in Minuten ablaufend anzeigen
Indem du dein Timer-Intervall nicht af 10 min. stellst, sondern auf eine, und dann aber erst beim 10. mal etwas auslöst ;)
|
:wiejetzt:
Hast du verstanden, was ich machen will? |
Re: Timer.Interval in Minuten ablaufend anzeigen
nimm lieber 2 timer. mit einem timermisst du die eigentliche zeit, mit dem 2. zeigst du die noch verbleibende zeit z.b. jede sekunde in dem label an. die zeit musst du dann eben über gettickcount oder so errechnen.
ach ja: Zitat:
|
Re: Timer.Interval in Minuten ablaufend anzeigen
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Kompon ente!!!
Hast du mein Demoprojekt Periodic Action heruntergeladen????? Hast du das Projekt angeschaut ? Also nochmals das Projekt mit RESTZEITANZEIGE. |
Zitat:
Mein Verfahren - und bestimmt auch das von shmia - ist einfach, den Timeintervall bspw. auf eine Minute zu setzen, und eine globale Variable z.B. auf 10. Dann schreibst du in der OnTimer-Prozedur sowas wie
Delphi-Quellcode:
so in etwa - da sind natürlich noch Fehler drin ...
dec (Zaehler);
if zaehler = 0 then begin Timer.Enabled := False; showmessage ('Tadaaaa - 10 min. sind um !!!'); end else showmessage ('noch genau' + zaehler + ' MInuten bis zur großen Überrachung !!!'); Und diese Methode ist viiiiel besser als ein zweiter Timer ;) |
Re: Timer.Interval in Minuten ablaufend anzeigen
2 Edit Komponenten
- ins erste Edit 10 reinschreiben - ins zweite 0 reinschreiben 1 Timer Komponente - Interval auf 1000 - Active := True
Delphi-Quellcode:
Code müsste stimmen, überprüft das aber lieber nochmal!
procedure TForm1.Timer1Timer(Sender: TObject);
var h,m : integer; begin h := strtoint(Edit1.Text); m := strtoint(Edit2.Text); if m = 0 then begin dec(h); if (h < 0) and (m = 0) then begin Timer1.Enabled := false; ShowMEssage('Ende'); end; m := 60; end; dec(m); Edit1.Text := inttostr(h); Edit2.Text := inttostr(m); end; |
Zitat:
klar hat man diese zeitdifferenz auch, wenn man einen einzelnen timer 10 minuten laufen lässt, die ist aber um ein vielfaches kleiner, da man nur einen Timeraufruf statt 600 hat. |
Re: Timer.Interval in Minuten ablaufend anzeigen
@BlackJack: Bei dem Timer summiert sich da nix. Wenn du mal einen Timer auf 10 Sekunden gesetzt hast und dann einen Haltepunkt gesetzt hast, wirst du mitbekommen das beim neu lauslofen das Timerevent nachgeholt wird.
Das liegt daran das der Timer durch eine Windowmessage ausgelöst wird. Wenn das Programm jetzt mit irgendetwas beschäftigt ist oder gerade anhält landen trotzdem die Timer-messages in der Nachrichtenschleife und werden dann wenn das programm wieder reagiert abgearbeitet. zu Abweischungen würde es nur kommen wenn der Timer immer wieder angehalten wird, ansonsten nicht. |
Re: Timer.Interval in Minuten ablaufend anzeigen
Diese eventuelle "Aufummierung" (von vieleicht ein paar Millisekunden - kommt, wenn überhaupt, auf das Intervall an) ist aber vernachlässigbar, ich würde sagen, es ist erstmal einfacher mit einem Timer, und es können nicht Sachen wie z.B. "noch -1 Minute" entstehen, wenn die timer nicht synchron arbeiten ;)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:10 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