AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Uhrzeit in Statusbar

Ein Thema von Darkchild · begonnen am 10. Nov 2006 · letzter Beitrag vom 10. Nov 2006
Antwort Antwort
Darkchild

Registriert seit: 13. Okt 2006
Ort: NRW
169 Beiträge
 
Delphi 2006 Enterprise
 
#1

Uhrzeit in Statusbar

  Alt 10. Nov 2006, 11:10
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:
procedure TfrmMain.statusbarzeit();
var
Zeit:Ttime;
begin
Zeit := getTime;
dxstatbarfrmmain.Panels[0].text := timetostr(Zeit);
dxstatbarfrmmain.Panels[1].text := mitarbeitername;
end;
Das hat zur folge das er die Uhrzeit ausliesst diese aber nicht fortlaufend aktuell hält.

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
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Uhrzeit in Statusbar

  Alt 10. Nov 2006, 11:13
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
JonnyGuitar

Registriert seit: 4. Jun 2004
233 Beiträge
 
#3

Re: Uhrzeit in Statusbar

  Alt 10. Nov 2006, 11:13
hi,

du könntest zb. einen ttimer benutzen und in dessem event die uhrzeit jede sekunde an die statusbar schicken

Delphi-Quellcode:
procedure TForm1.tmr1Timer(Sender: TObject);
begin
  dxstatbarfrmmain.Panels[0].text := timetostr(now)
end;
mfg Jonny
the only thing to fear is runnin' out of beer
  Mit Zitat antworten Zitat
Darkchild

Registriert seit: 13. Okt 2006
Ort: NRW
169 Beiträge
 
Delphi 2006 Enterprise
 
#4

Re: Uhrzeit in Statusbar

  Alt 10. Nov 2006, 11:17
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 .

Gruss
Darkchild
  Mit Zitat antworten Zitat
Darkchild

Registriert seit: 13. Okt 2006
Ort: NRW
169 Beiträge
 
Delphi 2006 Enterprise
 
#5

Re: Uhrzeit in Statusbar

  Alt 10. Nov 2006, 11:24
@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.

thx und Gruss
Darkchild
  Mit Zitat antworten Zitat
smudo

Registriert seit: 6. Sep 2005
Ort: Cottbus
362 Beiträge
 
Delphi XE2 Professional
 
#6

Re: Uhrzeit in Statusbar

  Alt 10. Nov 2006, 12:03
Hier noch eine Kanone für Spatzen:

Delphi-Quellcode:
  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;
Und im verwendeten Proc so aufrufen:
Delphi-Quellcode:
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;
Gruß

René
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Uhrzeit in Statusbar

  Alt 10. Nov 2006, 12:07
Du greifst ohne zu Synchronisieren auf visuelle Komponenten des Formulares zu:
Delphi-Quellcode:
procedure TTimerLabel.Execute;
begin
  inherited;
  ShowTime;
end;

procedure TTimerLabel.ShowTime;
begin
  while not FStop do
  begin
    FTimeLabel.Caption := TimeToStr(Now);
    Sleep(Delay);
  end;
end;
Da die visuellen Komponenten von Delphi nicht threadsafe sind, kann das zu Programmfehlern führen. Siehe dazu auch die Delphi Hilde: Delphi-Referenz durchsuchensynchronize.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
smudo

Registriert seit: 6. Sep 2005
Ort: Cottbus
362 Beiträge
 
Delphi XE2 Professional
 
#8

Re: Uhrzeit in Statusbar

  Alt 10. Nov 2006, 12:11
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:46 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