![]() |
Uhrzeit in Statusbar
Mahlzeit,
ich habe in meinem frmMain eine Statusbar, diese zeigt mir an welcher Benutzer gerade Angemeldet ist, die passenden AutoHints zu den dort liegenden Buttons und die Uhrzeit. Das Problem für mich ist jetzt ich gehe an die Uhrzeit so ran:
Delphi-Quellcode:
Das hat zur folge das er die Uhrzeit ausliesst diese aber nicht fortlaufend aktuell hält.
procedure TfrmMain.statusbarzeit();
var Zeit:Ttime; begin Zeit := getTime; dxstatbarfrmmain.Panels[0].text := timetostr(Zeit); dxstatbarfrmmain.Panels[1].text := mitarbeitername; end; Frage jetzt : Was muss ich machen damit die Uhrzeit in meiner StatusBar fortlaufend tickt mit Stunden,Minuten und Sekunden ? Gibt es da eine Funktion oder Procedure in der DateUtils die ich aufrufen kann und wenn wo muss die dann eingebunden werden oder muss ich da ganz anders vorgehen ? Gruss Darkchild |
Re: Uhrzeit in Statusbar
Warum sollte sie auch aktualisiert werden? Du weißt dem Panel ja nur einmal die aktuelle Uhrzeit zu. Woher soll das Panel wissen, das sie andauernd aktualisiert werden soll? Nimm einen Timer und weiß die aktuelle Uhrzeit im OnTimer-Ereignis dem Panel zu.
|
Re: Uhrzeit in Statusbar
hi,
du könntest zb. einen ttimer benutzen und in dessem event die uhrzeit jede sekunde an die statusbar schicken
Delphi-Quellcode:
mfg Jonny
procedure TForm1.tmr1Timer(Sender: TObject);
begin dxstatbarfrmmain.Panels[0].text := timetostr(now) end; |
Re: Uhrzeit in Statusbar
Das die nicht aktuallisiert werden konnte so wie ich das gemacht habe war mir schon klar.
Deshalb ja die frage womit das anders geht. Den Timer habe ich auch gerade in der Mangel, hatte mir aber gedacht das es vieleicht eine fertige Geschichte gibt die ich nur aufrufen muss und die das für mich übernimmt. Aber dennoch Danke, mit dem Timer war jetzt zufall das ich den gerade gefunden habe, sonst hätte ich da wohl auch noch überlegt. Naja, manchmal sieht man halt den Wald vor lauter Bäumen nicht mehr :wall: . Gruss Darkchild |
Re: Uhrzeit in Statusbar
@Jonny Guitar
Jo funzt, habe erst die einmalige Initialisierung der Zeit in der Procedure und dannach übernimmt der Timer jetzt die weitere Funktion, läuft rund und im Sekunden Takt. :thumb: thx und Gruss Darkchild :idea: |
Re: Uhrzeit in Statusbar
Hier noch eine Kanone für Spatzen:
Delphi-Quellcode:
Und im verwendeten Proc so aufrufen:
TTimerLabel = class(TThread)
private FTimeLabel: TLabel; //hier die gewünschte Komponente verwenden FStop: Boolean; FDelay: Cardinal; protected procedure Execute; override; procedure ShowTime; public constructor Create(const aLabel: TLabel; const aDelay: Cardinal; ThreadPriority: TThreadPriority); procedure Stop; property Delay: Cardinal read FDelay write FDelay; end; constructor TTimerLabel.Create(const aLabel: TLabel; const aDelay: Cardinal; ThreadPriority: TThreadPriority); begin inherited Create(True); Priority := ThreadPriority; FStop := False; FDelay := aDelay; FTimeLabel := aLabel; FreeOnTerminate := True; Resume; end; procedure TTimerLabel.Execute; begin inherited; ShowTime; end; procedure TTimerLabel.ShowTime; begin while not FStop do begin FTimeLabel.Caption := TimeToStr(Now); Sleep(Delay); end; end; procedure TTimerLabel.Stop; begin if not FStop then FStop := True; end;
Delphi-Quellcode:
Gruß
TL: TTimerLabel;
procedure TfrmTest.FormShow(Sender: TObject); begin TL := TTimerLabel.Create(lbTime, 10, tpNormal); //10 ist OK, mind. 1 verwenden und max 1000 ;) end; procedure TfrmTest.FormClose(Sender: TObject; var Action: TCloseAction); begin TL.Stop; end; René |
Re: Uhrzeit in Statusbar
Du greifst ohne zu Synchronisieren auf visuelle Komponenten des Formulares zu:
Delphi-Quellcode:
Da die visuellen Komponenten von Delphi nicht threadsafe sind, kann das zu Programmfehlern führen. Siehe dazu auch die Delphi Hilde:
procedure TTimerLabel.Execute;
begin inherited; ShowTime; end; procedure TTimerLabel.ShowTime; begin while not FStop do begin FTimeLabel.Caption := TimeToStr(Now); Sleep(Delay); end; end; ![]() |
Re: Uhrzeit in Statusbar
Richtig. Sollte auch nur ein kleines Beispiel für eine andere Variante sein.
Da kann und sollte man, wenn man's wirklich verwenden will, noch einiges dran tun. Danke Luckie für den wichtigen Hinweis. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:52 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