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 Analoge (Stopp)uhr (https://www.delphipraxis.net/49814-analoge-stopp-uhr.html)

Aike 16. Jul 2005 10:54


Analoge (Stopp)uhr
 
Hallo,

ich möchte für ein Programm eine Stoppuhr nutzen, die eine verbleibende Zeit abläuft (und bei 12 Uhr anhält). Ich habe dazu die AnalogClock aus den JEDI-Komponenten nutzen wollen, aber die Eigenschaft "TimeSet" hat bei mir keine Auswirkungen, somit wird immer die aktuell Zeit verwendet, was nicht der Fall sein soll.

Ich habe es mit
Delphi-Quellcode:
anClock.TimeSet:=StrToTime('12:00:00');
probiert, zeigte aber keine direkten Auswirkungen auf die Uhr. Als ich
Delphi-Quellcode:
showmessage(TimeToStr(anClock.TimeSet));
abgefragt habe, kam auch [12:00:00] zurück.
Kennt einer von euch vielleicht eine andere analoge Uhr, oder weiß, wie ich mit dem TimeSet umgehen muss?

Vielen Dank für eure Hilfe :angel2:

Jarmen_Kell 16. Jul 2005 12:24

Re: Analoge (Stopp)uhr
 
Ich hab keine Ahnung, was du eigentlich von uns möchtest ...

Wenn du meinst, dass eine Uhr laufen und nach 12 Stunden was machen soll:

TJVTFAlarm (Jv TimeFramework)
TimerIntervall:=43200000
Enabled:=true
Das Event heißt dann OnAlarm

Wenn irgendetwas um 12 Uhr passieren soll:

JVClock (Jv Visual)
Alarmenabled:=true
AlarmHour:=12
Das Event heißt wieder einmal OnAlarm
Oder alternativ jedes mal bei OnGetTime die aktuelle mit der gewünschten Zeit vergleichen..

Oder aber du schreibst einfach mal verständlich, worauf du hinaus willst :)

Aike 16. Jul 2005 12:33

Re: Analoge (Stopp)uhr
 
Ich erkläre es besser nochmals:

Über ein Edit-Feld kann der Benutzer eine gewisse Zeit eingeben (in Sekunden). Beim Drücken auf den Startknopf soll eine analoge Uhr die eingegebe Zeit ablaufen, sodass die Zeiger nach x Sekunden auf 12 Uhr stehen.
Das einzige, was die Uhr sonst noch können muss, ist, um 12 Uhr auch anzuhalten.

[edit]Ich habe es mit der Eigenschaft TimeOffset und einem komischen Variablengewirr geschafft, zumindest die Minuten und Stunden hinzubiegen. Leider kann man damit nicht den Sekundenzeiger beeinflussen.
Sollte doch noch eine bessere analoge Uhr im iNet verfügbar sein, wüsste ich gerne einen Link dort hin ;-)[/edit]

Jarmen_Kell 16. Jul 2005 16:22

Re: Analoge (Stopp)uhr
 
Dann könntest du auch die TJvClock nehmen.
Die musst du dann bearbeiten.

Es müsste reichen,
Delphi-Quellcode:
function TJvClock.GetSystemTime: TDateTime;
begin
  Result := SysUtils.Time;
  if Assigned(FOnGetTime) then
    FOnGetTime(Self, Result);
end;

procedure TJvClock.GetTime(var T: TJvClockTime);
var
  MSec: Word;
begin
  with T do
    DecodeTime(GetSystemTime, Hour, Minute, Second, MSec);
end;
anzupassen.

Es müsste dann also anstatt der Systemzeit 12:00:00 - eingabe genommen werden.
Da brauchst du dann noch einiges an Rechen- und Denkarbeit, aber das sollte wohl machbar sein (mit probieren auf jeden Fall).

Edit: Alternativlösung: Die Uhr-mal-prozeduren rauskopieren und z.B. auf eine Paintbox (oder Bitmap+Bitblt) anwenden. Dann reicht ein Timer und ne Paintbox und evtl. ein Bmp

Aike 16. Jul 2005 16:27

Re: Analoge (Stopp)uhr
 
Ja, das sieht gut aus, ist aber keine analoge Uhr (mit Zeigern :evil: )

Jarmen_Kell 16. Jul 2005 16:30

Re: Analoge (Stopp)uhr
 
TJvClock.ShowMode:=scAnalog;
Jetzt schon.

PS: Beachte die Alt.-Lösung!

Aike 16. Jul 2005 16:37

Re: Analoge (Stopp)uhr
 
TJvClock hat bei mir diese Eigenschaft nicht. Sollte die Komponente veraltet sein?

Jarmen_Kell 16. Jul 2005 17:10

Re: Analoge (Stopp)uhr
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe Jedi 3.00. Dann könnte es sein, dass du eine alte Version hast.

Ich habe mal die Zeichenprozeduren in ein Txt-Dokument kopiert und angehenkt.

Kannst dir entweder die neuen Jedis besorgen oder das aus dem Anhang in deine Prozeduren einfügen.
Möglicherweise muss du noch einige Werte bearbeiten


Edit: Hatte was vergessen, neue Version (18:12)


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:44 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