本实例介绍
如何在程序中动态地显示当前
系统时间,并且可以设置系统时间。
向窗体上添加一个TTimer组件和两个TDateTimePicker组件,其中TDateTimePicker组件用于显示和设置系统的日期和时间,它们的Kind属性分别设置为dtkDate和dtkTime,这样它们分别显示日期和时间。而TTimer组件则执行定时操作。设计完成的主界面如图1所示。
图1 主界面 |
TTimer组件的Interval属性设置为1000,这样,每隔1000毫秒就会执行下面的响应代码:
procedure TForm1.Timer1Timer(Sender: TObject); begin self.DateTimePicker1.Date:=Now; self.DateTimePicker2.Time:=Now; end; |
Now函数的返回值中既有当前的日期,也有当前的时间。这样,通过TTimer组件的OnTimer过程中的self.DateTimePicker1.Date:=Now语句在DateTimePicker1组件中动态显示当前日期,通过self.DateTimePicker2.Time:=Now语句在DateTimePicker2组件中动态显示当前时间。
下面说明如何在程序运行过程中修改系统时间。
在程序运行过程中,如果用户手动修改了DateTimePicker2组件中的时间,那么就会激活以下代码:
procedure TForm1.DateTimePicker2Change(Sender: TObject); var MyTime:TSystemTime; begin DateTimeToSystemTime(self.DateTimePicker2.Time,MyTime); Timer1.Enabled:=false; SetLocalTime(MyTime); Timer1.Enabled:=true; end; |
程序首先把DateTimePicker2组件中的时间格式转化为系统时间格式。然后设置TTimer组件为无效状态,同时通过SetLocal
Time函数把在DateTimePicker2组件中修改后的时间设置为系统时间。最后设置TTimer组件为有效状态。
在程序运行过程中修改系统日期的方法,与修改系统时间的方法大体相同。
程序代码如下:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, Calendar, ExtCtrls, ComCtrls;
type TForm1 = class(TForm) DateTimePicker2: TDateTimePicker; DateTimePicker1: TDateTimePicker; Timer1: TTimer; procedure Timer1Timer(Sender: TObject); procedure DateTimePicker2Change(Sender: TObject); procedure DateTimePicker1Change(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Timer1Timer(Sender: TObject); begin self.DateTimePicker1.Date:=Now; self.DateTimePicker2.Time:=Now; end;
procedure TForm1.DateTimePicker2Change(Sender: TObject); var MyTime:TSystemTime; begin DateTimeToSystemTime(self.DateTimePicker2.Time,MyTime); Timer1.Enabled:=false; SetLocalTime(MyTime); Timer1.Enabled:=true; end;
procedure TForm1.DateTimePicker1Change(Sender: TObject); var MyDate:TSystemTime; begin DateTimeToSystemTime(self.DateTimePicker1.Time,MyDate); Timer1.Enabled:=false; SetLocalTime(MyDate); Timer1.Enabled:=true; end; end. |
保存文件,然后按F9键运行程序,程序运行的初始画面如图2所示。
图2 程序运行的初始画面 |
读者可以在程序运行过程中,手动修改系统的日期或时间,如图3所示。
图3 程序运行结果 |
本实例不但涉及到了利用Now函数来获得当前的时间和日期,而且还涉及到了如何将TDateTime格式转换为TSystemTime格式,并且设置为系统时间。