?? main.pas
字號:
unit Main;
interface
uses
Windows, SysUtils, Classes, Controls, Forms, StdCtrls, ExtCtrls,
IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdDayTime;
type
TMainFrm = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
lbCurZone: TLabel;
lbCurTime: TLabel;
lbNetTime: TLabel;
Timer1: TTimer;
Panel1: TPanel;
cmdTime: TButton;
cmdSync: TButton;
cmdExit: TButton;
IdDayTime1: TIdDayTime;
Label4: TLabel;
cbbTimeSvr: TComboBox;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure cmdTimeClick(Sender: TObject);
procedure cmdExitClick(Sender: TObject);
private
{ Private declarations }
hBias: Integer;
mBias: Integer;
function ShowMsg(sMsg: String; Btns: LongInt = mb_Ok+mb_IconError): Integer;
public
{ Public declarations }
end;
var
MainFrm: TMainFrm;
implementation
{$R *.dfm}
{$I TimeSvrs.inc}
procedure TMainFrm.FormCreate(Sender: TObject);
var
i: Integer;
tzInfo: Time_Zone_Information;
begin
Application.Title:=Caption;
GetTimeZoneInformation(tzInfo);
//獲取當地時區和格林威治的時間差
hBias:=tzInfo.Bias div 60;
mBias:=tzInfo.Bias mod 60;
//顯示當地時區
lbCurZone.Caption:=Trim(tzInfo.DaylightName);
//顯示當前時間
lbCurTime.Caption:=FormatDateTime('yyyy-mm-dd hh:nn:ss.zzz',Now);
//初始化時間服務器列表
for i:=0 to Length(ATimeSvr)-1 do cbbTimeSvr.Items.Append(ATimeSvr[i].Host);
end;
procedure TMainFrm.FormDestroy(Sender: TObject);
begin
//
end;
procedure TMainFrm.FormShow(Sender: TObject);
begin
//
end;
procedure TMainFrm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//
end;
function TMainFrm.ShowMsg(sMsg: String; Btns: LongInt = mb_Ok+mb_IconError): Integer;
begin
Result:=Application.MessageBox(PChar(sMsg),PChar(Caption),Btns);
end;
procedure TMainFrm.cmdTimeClick(Sender: TObject);
var
TimeStr: String;
SysTime: TSystemTime;
begin
//服務器地址簡單判斷
if Length(cbbTimeSvr.Text)<=5 then
begin
ShowMsg('互聯網時間服務器無效,請重新輸入或選擇一個!');
cbbTimeSvr.SetFocus;
Exit;
end;
//從時間服務器獲取時間
cmdTime.Enabled:=false;
cmdSync.Enabled:=false;
try
IdDayTime1.Host:=cbbTimeSvr.Text;
TimeStr:=Trim(IdDayTime1.DayTimeStr);
SysTime.wYear:=StrToInt(Copy(TimeStr,7,2));
SysTime.wMonth:=StrToInt(Copy(TimeStr,10,2));
SysTime.wDay:=StrToInt(Copy(TimeStr,13,2));
SysTime.wHour:=StrToInt(Copy(TimeStr,16,2));
SysTime.wMinute:=StrToInt(Copy(TimeStr,19,2));
SysTime.wSecond:=StrToInt(Copy(TimeStr,22,2));
SysTime.wMilliseconds:=StrToInt(Copy(TimeStr,32,3));
except
cmdTime.Enabled:=true;
cmdSync.Enabled:=true;
ShowMsg(Format('從時間服務器"%s"獲取時間失敗!',[cbbTimeSvr.Text]));
Exit;
end;
//對獲取的時間進行修正
SysTime.wYear:=SysTime.wYear+2000;
SysTime.wHour:=SysTime.wHour-hBias;
SysTime.wMinute:=SysTime.wMinute-mBias;
//顯示當前和互聯網當前時間
lbCurTime.Caption:=FormatDateTime('yyyy-mm-dd hh:nn:ss.zzz',Now);
lbNetTime.Caption:=FormatDateTime('yyyy-mm-dd hh:nn:ss.zzz',SystemTimeToDateTime(SysTime));
//如果是cmdSync則進行本機時間同步
if (Sender=cmdSync) then
begin
SetLocalTime(SysTime);
lbCurTime.Caption:=FormatDateTime('yyyy-mm-dd hh:nn:ss.zzz',Now);
ShowMsg(Format('從時間服務器"%s"同步時間成功!',[cbbTimeSvr.Text]),mb_Ok+mb_IconInformation);
end;
cmdTime.Enabled:=true;
cmdSync.Enabled:=true;
end;
procedure TMainFrm.cmdExitClick(Sender: TObject);
begin
Close;
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -