Files
lazarus-ccr/applications/lazclock/mainform.pas
sekelsenmat 1ba866f87f lazclock: Implements the initial clock control
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2303 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2012-02-20 12:40:28 +00:00

107 lines
2.4 KiB
ObjectPascal

unit mainform;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
ExtCtrls, DateUtils,
clock_control;
type
{ TForm1 }
TForm1 = class(TForm)
btnCronometer: TButton;
btnStart: TButton;
btnStop: TButton;
btnReset: TButton;
btnClock: TButton;
labelCronometer: TLabel;
Notebook: TNotebook;
Page1: TPage;
pageCronometer: TPage;
timerCronometer: TTimer;
timerClock: TTimer;
procedure HandleChangePage(Sender: TObject);
procedure btnResetClick(Sender: TObject);
procedure btnStartClick(Sender: TObject);
procedure btnStopClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure timerClockTimer(Sender: TObject);
procedure timerCronometerTimer(Sender: TObject);
private
{ private declarations }
LazClockControl: TLazClockControl;
public
{ public declarations }
CronometerStarted: Boolean;
CronometerTime, CronometerLastUpdate: TTime;
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.timerClockTimer(Sender: TObject);
begin
LazClockControl.Invalidate;
end;
procedure TForm1.timerCronometerTimer(Sender: TObject);
var
lNow: TDateTime;
lFormatSettings: TFormatSettings;
begin
lNow := Now();
CronometerTime := CronometerTime + CronometerLastUpdate - lNow;
CronometerLastUpdate := lNow;
lFormatSettings := SysUtils.FormatSettings;
lFormatSettings.LongTimeFormat := 'hh:nn:ss:zzz';
labelCronometer.Caption := SysUtils.TimeToStr(CronometerTime, lFormatSettings);
end;
procedure TForm1.HandleChangePage(Sender: TObject);
begin
Notebook.PageIndex := (Sender as TButton).Tag;
end;
procedure TForm1.btnResetClick(Sender: TObject);
begin
CronometerTime := DateUtils.EncodeTimeInterval(0, 0, 0, 0);
end;
procedure TForm1.btnStartClick(Sender: TObject);
begin
CronometerStarted := True;
timerCronometer.Enabled := True;
CronometerLastUpdate := Now();
end;
procedure TForm1.btnStopClick(Sender: TObject);
begin
CronometerStarted := False;
timerCronometer.Enabled := False;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
LazClockControl := TLazClockControl.Create(Self);
LazClockControl.Height := 400;
LazClockControl.Width := 400;
LazClockControl.Top := 0;
LazClockControl.Left := 0;
LazClockControl.Parent := Notebook.Page[0];
LazClockControl.DoubleBuffered := True;
end;
end.