Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Timer + Gauge (https://www.delphipraxis.net/20531-timer-gauge.html)

zecke 19. Apr 2004 15:59


Timer + Gauge
 
seid gegrüßt! :hi:

ich möchte eine zeit einstellen, in der der timer, wenn er abläuft eine aktion ausführt. Bis er diese ausführt soll der Gauge Balken ablaufen - sozusagen ein countdown in form des gauge-balkens.

wie kann ich das in zusamenhang mit dem timer realisieren, hab bisher keinen progress erzielen können :(

edit: wenn jmd weiß wie ich das mit der progressbar lösen kann, die ist mir auch recht.

shmia 19. Apr 2004 16:19

Re: Timer + Gauge
 
Zitat:

Zitat von oH LoRd
ich möchte eine zeit einstellen, in der der timer, wenn er abläuft eine aktion ausführt. Bis er diese ausführt soll der Gauge Balken ablaufen - sozusagen ein countdown in form des gauge-balkens.

Du lässt den Timer alle 2 bis 60 Sekunden feuern und brechnest dann die Sekunden bis zum Zieltermin:

Delphi-Quellcode:
.... .Timer1OnTimer(...);
var
   rest : TDateTime;
   sekunden : integer;
begin
   rest := zielzeit-Now;
   sekunden := Round(rest*60.0*60.0*24.0);

   if Sekunden <= 0.0 then
   begin
      Timer1.Enabled := False;
      // und Aktion !
      Execute('Format C:');
   end
   else if sekunden < 10 then
      Timer1.Interval := 200;  // es wird bald Ernst; also öftes nachschauen

   Gauge1.Position := sekunden;
end;

zecke 19. Apr 2004 16:37

Re: Timer + Gauge
 
das verstehe ich net ganz und ich hab das bisher nicht zum laufen gebracht :?

shmia 20. Apr 2004 08:47

Re: Timer + Gauge
 
Na das ist doch nicht so schwer: :stupid:
angenommen, du möchtest einen Countdown von 45 Minuten.
Anstatt den Timer einmal nach 45 min feuern zu lassen, rechnest du erst einmal
die Zielzeit aus:
Delphi-Quellcode:
var
   zielzeit : TDateTime;
   minuten : double;
begin
   minuten := 45.0;

   // Zum Datentyp TDateTime muss man folgendes wissen:
   // TDateTime wird als Flieskommawert in einem Double gespeichert
   // 1 Tag entspricht dem Wert 1.0
   // Beispiele
   // morgen := Now + 1.0; // morgen um die gleiche Uhrzeit
   // h1 := Now + 0.5;     // ab jetzt in 12 Stunden (=0.5 Tage)

   zielzeit := Now + (45.0/60.0) / 24.0;
end;
Jetzt lässt du den Timer alle 2 Sekunden feuern und rechnest den Abstand
in Sekunden bis zum Zieltermin aus.
Delphi-Quellcode:
   rest := zielzeit-Now;
   sekunden := Round(rest*60.0*60.0*24.0); // 1 Tag hat 24 Stunden, 1 Std=60Min, 1 Min=60 sekunden
Ist der Abstand <= 0 dann wird der Timer deaktiviert und deine Aktion kann stattfinden.
Anderfalls wird nur die Position deiner Gauge Komponente verändert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:15 Uhr.

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