Рис. 1.16. В окне программы Электронные часы отображается текущее время, дата и день недели

unit eclock_3_;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, ExtCtrls, StdCtrls;
type
TForml - class(TForm)
Timerl: TTimer;
Labell: TLabel; // время
Label2: TLabel; // дата и день недели
procedure FormPaint(Sender: TObject);
procedure TimerlTimer(Sender: TObject);
procedure FormCreate(Sender: TObject);
// Объявление процедуры ShowTime
// помещено сюда вручную.
// Это сделано, чтобы функция имела
// доступ к компонентам формы напрямую
procedure ShowTime;
private
/ Private declarations }
public
{ Public declarations j
end';

var
Forml: TForml;

implementation

const
stDay : array[1..7J of stringfll) =
('воскресенье1,'понедельник1,'вторник',
'среда','четверг','пятница',¦суббота');

stMonth : array[1..12] of string[8] =
('января','февраля','марта',
'апреля1, 'мая','июня','июля',
'августа','сентября', 'октября',
'ноября','декабря'); ,

{$R *.dfm)

// отображает текущее время
procedure TForml.ShowTime;
var
Time: TDateTime; // текущее время
begin
Time :¦ Now(); // получить системное время
Labell.Caption := FormatDateTime('hh:mm:ss',Time);
end;

// обработка события Paint
procedure TForml.FormPaint(Sender: TObject);
begin
ShowTime; // отобразить часы
end;

// обработка сигнала таймера
procedure TForml.TimerlTimer(Sender: TObject);
begin
ShowTime; // отобразить время
end;

/7 обработка события OnCreate
procedure TForml.FormCreate(Sender: TObject);
var
Present: TDateTime; // текущая дата и время
Year, Month, Day : Word; // 1Х>д, месяц и число, как
// отдельные числа
begin

Present:= Now; // получить текущую дату
DecodeDate(Present, Year, Month, Day);
Label2.Caption := 'Сегодня '+IntToStr(Day)+ ' ' +
stMonth[Month] + ' '+ IntToStr(Year)+
' года, '+ stDay[DayOfWeek(Present)];

// настроить и запустить таймер
Timerl.Interval := 1000; // период сигналов таймера 1 с
Timerl.Enabled := True; // пуск таймера
end;

end.