Autor Beitrag
Supernova
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 108

WinXP
D7 Prof
BeitragVerfasst: So 18.01.04 16:47 
wie kann ich eine Uhr erstellen die sich jede Sekund aktualiesiert !!!
tomtom62
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 278

WIN 2000, XP prof
D5 prof.
BeitragVerfasst: So 18.01.04 17:32 
Meinst Du so etwas ?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
Timer1.Interval:=1000;
Timer1.enabled:=true;

procedure TForm1.Timer1Timer(Sender: TObject);
begin

label1.caption:=timetostr(now);

end;
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: So 18.01.04 20:46 
Timer fressen aber Resourcen, sind leider nicht unbegrenzt verfügbar,
Hier ein Beispiel mit einem Thread, der nur dann ausgeführt wird, wenn das System im Leerlauf ist:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
unit sbpZeit;

interface

uses
  Classes, ComCtrls;

type
  TStatusBarPanelZeit = class(TThread)
  private
    Panel: TStatusPanel; // Panel wo die Zeit angezeigt wird
    procedure UpdatePanel; virtual;
  protected
    procedure Execute; override;
  public
    Constructor Create(aPanel:TStatusPanel);
  end;

  TStatusBarPanelDatum = Class(TStatusbarPanelZeit)
  private
    procedure UpdatePanel; override;
  end;

implementation

uses SysUtils;

{ TStatusBarPanelZeit }

constructor TStatusBarPanelZeit.Create;
begin
  Inherited Create(true);
  Panel:=aPanel;
  FreeOnTerminate:= true;
  Priority:= tpIdle; // nur im Leerlauf
  Resume;            // und Thread starten
end;

procedure TStatusBarPanelZeit.Execute;
begin
  while not terminated do    // solange nicht beendet
    Synchronize(UpdatePanel);// Zeit updaten
end;

procedure TStatusBarPanelZeit.UpdatePanel;
begin
  Panel.Text:= TimeToStr(now);// Zeit anzeigen
end;

{ TStatusBarPanelDatum }

procedure TStatusBarPanelDatum.UpdatePanel;
begin
  Panel.Text:= DateToStr(now);// Datum anzeigen
end;

end.


im Hauptprogramm muss sich eine TStatuspanel mit min. 3 Panels befinden.
Dann, vieleicht in der OnCreate() des Haptfensters:

ausblenden Delphi-Quelltext
1:
2:
  TStatusBarPanelZeit.Create(Statusbar.Panels[1]);
  TStatusBarPanelDatum.Create(Statusbar.Panels[2]);


viel spass
grez
msch

_________________
ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?
obbschtkuche
Gast
Erhaltene Danke: 1



BeitragVerfasst: So 18.01.04 22:12 
Naja, selbst wenn Timer viele Ressourcen verbrauchen (was ich bezweifle) sehe ich keinen Sinn darin, direkt einen Thread dafür zu missbrauchen. So wie mir das aussieht, würde dein Thread ggf. auch das Panel viel zu oft updaten. (=>100% CPU-Auslastung)