关于时间的即时更新(10分)

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

delnus

Unregistered / Unconfirmed
GUEST, unregistred user!
我写了一个控件,它的文本内容为系统的时间,每次装载时,它显示为系统的当前时间,
可是这个时间在运行时无法即时更新。
举个简单的例子
procedure TForm1.Button1Click(Sender:TObject);
begin
Label1.Caption:=TimeToStr(Time);
end;

在运行的时候,如何使label1的标题显示系统的最新时间?
 
用多线程技术.
 
Label1.Caption:=TimeToStr(Now);
 
代码如下:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Label1: TLabel;
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

TTimeThread=class(TThread)
private
TimeNow:TDateTime;
procedure GetNow();
protected
procedure Execute; override;
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
procedure TTimeThread.GetNow;
begin
Form1.Label1.Caption:=DateTimeToStr(TimeNow);
end;

procedure TTimeThread.Execute;
var
i:integer;
begin
FreeOnTerminate:=True;
TimeNow:=Now();
Synchronize(GetNow);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
TTimeThread.Create(false);
end;

end.
 
感谢rockxu,可是运行时,显示时间有点延迟,我把 label1.caption:=''in
designing time ok le .我看看多线程方面的编程。
 
再加入一個Timer控件
在他的OnTimer事件中這樣寫道
Label1.Caption:=TimeToStr(Time);
OnTimer的Interval屬性則是設置時間的,單位為毫秒
 
同意楼上兄所言
 
sydan的答案简单易用!
 
一,使用线程,刷新会比较好
二,使用timer也可以完成
三,如果你非要在button事件中使用,而不巧你的button事件需要比较长的时间才能
结束的话,请在写完label1.caption:=。。。。后,加上
Application.ProcessMessage
 
多人接受答案了。
 
后退
顶部