如何在TStatusBar上显示系统时间?(50分)

  • 主题发起人 主题发起人 dragonstar
  • 开始时间 开始时间
D

dragonstar

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在TStatusBar上显示系统时间?
 
procedure TForm1.FormCreate(Sender: TObject);
var
aDatetime:ttime;
begin
adatetime:=time;
Statusbar1.Panels[0].Text:=timeToStr(aDateTime);
end;
 
在窗体上加上一个Timer,在Timer的onTimer事件上写上

StatusBar1.Panels.Items.Text:=timetostr(time());//i表示你要在statusbar的哪里显示
 
在Timer控件的OnTime事件中触发以下代码:
StatusBar1.Panels.Items.Text := ForMatDateTime('YYYY-MM-DD',now);
 
建议不要用timer,应该放在Application.OnIdle 事件中调用。
 
有很多这种第三方控件啊
 
来晚了,同意Zero_cool的说法,就再详细的说一下吧。
先在要显示系统时间的窗口,声明一个私有的方法。

在 private 下面声明:
Procedure ShowSystemTime(Sender:Tobject; var Done:boolean);
在这个事件中做你想做的事(在状态条显示时间)

然后在Form的OnCreate事件中加入:
Application.OnIdle := ShowSystemTime;
这样就可以了。
 
其实这个方法有很多用处,记得最开始我看人家程序的时候
我也是想,不是吧,为了显示一个时间,还要加一个Timer控
件是不是有点在夸张了,后来才发现,原来是另有天地啊。
 
如果使用Timer控件的话,可能会比较影响系统的的性能

不过这个方法也有缺陷,就是只能做一些不太重要的事,
比如显示时间,或者做一些界面上的小玩意,如果是真
的对时间要求比较精确的话,还是要用到timer控件的。
 
我赞同jackl的做法:
把Timer的Interval设置为1000,这样可以每秒更新一次,同时在OnTimer中加入如下代码:
StatusBar1.Panels.Items.Text := ForMatDateTime('YYYY-MM-DD HH:MM:SS',now);
 
我的建议是,你先定义变量如Time,Datetime等。在指定Statusbar控件的Panels属性的位置。
双击即何看到Statusbar控件属性,看来你是一出学者。我天天在网上,有问题可问我。
 
接受答案了.
 
后退
顶部