![]() |
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:
probiert, zeigte aber keine direkten Auswirkungen auf die Uhr. Als ich
anClock.TimeSet:=StrToTime('12:00:00');
Delphi-Quellcode:
abgefragt habe, kam auch [12:00:00] zurück.
showmessage(TimeToStr(anClock.TimeSet));
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: |
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 :) |
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] |
Re: Analoge (Stopp)uhr
Dann könntest du auch die TJvClock nehmen.
Die musst du dann bearbeiten. Es müsste reichen,
Delphi-Quellcode:
anzupassen.
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; 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 |
Re: Analoge (Stopp)uhr
Ja, das sieht gut aus, ist aber keine analoge Uhr (mit Zeigern :evil: )
|
Re: Analoge (Stopp)uhr
TJvClock.ShowMode:=scAnalog;
Jetzt schon. PS: Beachte die Alt.-Lösung! |
Re: Analoge (Stopp)uhr
TJvClock hat bei mir diese Eigenschaft nicht. Sollte die Komponente veraltet sein?
|
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:28 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 by Thomas Breitkreuz