Entwickler-Ecke
Sonstiges (Delphi) - Uhr im label
Arctics - Di 21.11.06 22:58
Titel: Uhr im label
Ich hab nun außreichent danach gesucht, hab aber nichts gefunden was mir weiterhelfen könnte.
Das Problem ist:
ich will in einem ganz normalen label eine uhr einbauen
ich habs auch versucht, aber hier passiert erst ne ganz zeit gar nichts und dann wird die uhrzeit angezeit, aber nicht sekündlich aktuallisiert
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.Button1Click(Sender: TObject);
var w:real; begin repeat w:=w+1;
Label1.Caption := FormatDateTime('hh:nn:ss', now);
until w=200001; end; |
Moderiert von
raziel: Quote- durch Delphi-Tags ersetzt
Ironwulf - Di 21.11.06 23:03
omg ;D
nimm nen timer anstatt nen button
Danny87 - Di 21.11.06 23:03
Warum machst du nicht einfach nen Timer mit
Delphi-Quelltext
1:
| Label1.caption := TimeToStr(Time); |
??
Gruss
Daniel
Delete - Di 21.11.06 23:04
timer nehmen...
Dragonclaw - Di 21.11.06 23:10
Das kannste ganz einfach mit nem Timer machen, den findest du unter dem Reiter 'System'.
Wenn du Enabled auf true lässt fängt er direkt an.
Die Procedure bekommst du über nen Klick auf Ereignisse und dann Doppelklick auf 'OnTimer'.
Das Intervall des Timers gibt die abstände in millisekunden an, in denen die Procedure Timer
ausgeführt werden.
Delphi-Quelltext
1: 2: 3: 4:
| procedure TForm1.Timer1Timer(Sender: TObject); begin Label1.Caption := FormatDateTime('hh:nn:ss', now); end; |
Delete - Di 21.11.06 23:16
schon ganz gut,... aber du hats den processmessage vergessen...
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| PROCEDURE TForm1.Button1Click(Sender: TObject);
VAR w: REAL; BEGIN REPEAT w := w + 1;
Label1.Caption := FormatDateTime('hh:nn:ss', now); application.processmessage; UNTIL w = 200001; END; |
Arctics - Di 21.11.06 23:20
:shock:
danke, mit so einem timer ist ja sehr hilfreich,
ich hab erst vor kurzem mit delphi angefangen...
gibts hier eigentlich irgentwo ein tutorial?
Ironwulf - Di 21.11.06 23:21
wenn ers so macht und dann noch nen normal schnelln rechner hat zeigt das label, vllt max. 4-5 sekunden an
Delete - Mi 22.11.06 00:24
@Ironwulf: ein paar sekunden??? bei mir zeigt er nicht mal eine an. aber das war ja nicht seine frage...
aber er kann ja nach dem "application.processmessages" ja noch 'n sleep(3) oder so einbauen ;-)
VaNaTiC - Mi 22.11.06 00:56
Setz das Timer.Interval auf etwa 500ms, dann wird die Zeit ordentlich angezeigt.
Und Sleep(x) hat zusätzlich zum Warten die gleiche Funktionalität wie Application.ProcessMessages.
Dragonclaw - Mi 22.11.06 01:02
Ehmm wenn man den Timer auf 500ms (also 0,5sec) setzt aktualisiert sich die Ziet ja alle 0,5sec. Das bringt aber nix weil die Zeit sich ja im Sekundentakt (1000ms) verändert. Wenn du jetzt den Timer doppelt so oft ausführen lasst, verbraucht das nur mehr Leistung, und der Rest des Prgrammes läuft langsamer, die Zeit wird aber nicht genauer.
VaNaTiC - Mi 22.11.06 01:32
TTimer ist nicht 100%ig genau und Deine Zeit wird demzufolge nicht GENAU nach einer Sekunde auch GENAU nach einer Sekunde aktualisiert, deshalb etwa der Turnus pro halbe Sekunde. Und von Systemauslastung kann man dabei nicht sprechen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!