program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
Unit1.pas
unit Unit1;
//http://perso.wanadoo.fr/bardou/michel/
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, ExtCtrls;
type
TForm1 = class(TForm)
Panel1: TPanel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Panel2: TPanel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Edit5: TEdit;
Edit6: TEdit;
Label7: TLabel;
Edit7: TEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Label8: TLabel;
Edit4: TEdit;
Edit8: TEdit;
Panel3: TPanel;
Label9: TLabel;
BitBtn3: TBitBtn;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Edit9: TEdit;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
Form1: TForm1;
EcartHeures:integer;
implementation
{$R *.DFM}
{ TSystemTime est déclaré dans l'unité windows sous la forme :
type
TSystemTime = record
wYear: Word;
wMonth: Word;
wDayOfWeek: Word;
wDay: Word;
wHour: Word;
wMinute: Word;
wSecond: Word;
wMilliseconds: Word;
end;
}
{TDateTime est de type Double; (déclaré dans l'unitéSystem}
{La partie entière d'une valeur de type TDateTime représente le nombre de jours depuis le 30/12/1899.
La partie fractionnaire d'une valeur de type TDateTime est la partie des 24 heures écoulée.}
procedure TForm1.BitBtn1Click(Sender: TObject);
var DateEtHeure : TSystemTime;
begin
GetSystemTime(DateEtHeure); // récupère la date et 'heure système (GMT ?)
Edit1.Text:=IntToStr(DateEtHeure.wYear);
Edit2.Text:=IntToStr(DateEtHeure.wMonth);
Edit3.Text:=IntToStr(DateEtHeure.wDayOfWeek);
Edit4.Text:=IntToStr(DateEtHeure.wDay);
Edit5.Text:=IntToStr(DateEtHeure.wHour); // heure système
Edit6.Text:=IntToStr(DateEtHeure.wMinute);
Edit7.Text:=IntToStr(DateEtHeure.wSecond);
Edit8.Text:=IntToStr(DateEtHeure.wMilliseconds);
Edit9.Text:=IntToStr(DateEtHeure.wHour+EcartHeures); // heure réelle
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
var DateEtHeure : TSystemTime;
begin
DateEtHeure.wYear :=StrToInt(Edit1.Text);
DateEtHeure.wMonth :=StrToInt(Edit2.Text);
DateEtHeure.wDay :=StrToInt(Edit4.Text);
DateEtHeure.wHour :=StrToInt(Edit5.Text);
DateEtHeure.wMinute:=StrToInt(Edit6.Text);
DateEtHeure.wSecond:=StrToInt(Edit7.Text);
DateEtHeure.wMilliseconds:=StrToInt(Edit8.Text);
SetSystemTime(DateEtHeure); // modifie l'heure système du micro
SendMessage(FindWindow('Shell_TrayWnd',nil),WM_TIMECHANGE,0,0);// pour rafraichir
//tout de suiste l'affichage dans la barre des tâches
end;
procedure TForm1.BitBtn3Click(Sender: TObject);
begin
{Date et time sont de type TdateTime}
Label9.Caption := 'Nous sommes aujourd''hui le ' + DateToStr(Date);
Label10.Caption := 'il est ' + TimeToStr(Time);
end;
procedure TForm1.FormCreate(Sender: TObject);
{pour calculer l'écart entre l'heure réelle et l'heure système}
var heure,minute,seconde,milliseconde:word;
DateEtHeure : TSystemTime;
begin
DecodeTime(Time,Heure,minute,seconde,Milliseconde); // décompose l'heure réelle du micro de type TDateTime en heure minute etc.
GetSystemTime(DateEtHeure); // récupère la date et l'heure système (GMT ?)
EcartHeures:=heure-DateEtHeure.wHour; // calcul de l'écart entre l'heure réelle et l'heure système
Label12.Caption:=IntToStr(EcartHeures)+' heure(s)';
end;
end.

