
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@5056 8e941d3f-bd1b-0410-a28a-d453659cc2b4
182 lines
4.5 KiB
ObjectPascal
182 lines
4.5 KiB
ObjectPascal
unit Unit1;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
|
|
ExtCtrls, VpLEDLabel, VpClock;
|
|
|
|
type
|
|
|
|
{ TForm1 }
|
|
|
|
TForm1 = class(TForm)
|
|
BtnStartStop: TButton;
|
|
CbNewClockFace: TCheckBox;
|
|
CbMilitaryTime: TCheckBox;
|
|
EdCountDownTime: TEdit;
|
|
LblCountDownTime: TLabel;
|
|
LblElapsedTime: TLabel;
|
|
RgDisplayMode: TRadioGroup;
|
|
RgClockMode: TRadioGroup;
|
|
VpClock1: TVpClock;
|
|
VpLEDLabel1: TVpLEDLabel;
|
|
procedure AnalogClockCountdownDone(Sender: TObject);
|
|
procedure CbMilitaryTimeChange(Sender: TObject);
|
|
procedure VpClockTimeChange(Sender: TObject);
|
|
procedure BtnStartStopClick(Sender: TObject);
|
|
procedure CbNewClockFaceChange(Sender: TObject);
|
|
procedure EdCountDownTimeChange(Sender: TObject);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure RgClockModeClick(Sender: TObject);
|
|
procedure RgDisplayModeClick(Sender: TObject);
|
|
procedure VpClock1CountdownDone(Sender: TObject);
|
|
private
|
|
{ private declarations }
|
|
public
|
|
{ public declarations }
|
|
end;
|
|
|
|
var
|
|
Form1: TForm1;
|
|
|
|
implementation
|
|
|
|
{$R *.lfm}
|
|
|
|
{ TForm1 }
|
|
|
|
procedure TForm1.AnalogClockCountdownDone(Sender: TObject);
|
|
begin
|
|
ShowMessage('Countdown finished.');
|
|
end;
|
|
|
|
procedure TForm1.VpClockTimeChange(Sender: TObject);
|
|
begin
|
|
LblElapsedTime.Caption := Format('Elapsed: %d hrs, %d min, %d sec', [
|
|
VpClock1.ElapsedHours, VpClock1.ElapsedMinutes, VpClock1.ElapsedSeconds
|
|
]);
|
|
end;
|
|
|
|
procedure TForm1.BtnStartStopClick(Sender: TObject);
|
|
var
|
|
isStarted: Boolean;
|
|
willStart: Boolean;
|
|
begin
|
|
isStarted := VpClock1.Active;
|
|
willStart := not isStarted;
|
|
|
|
if willStart and (RgClockMode.ItemIndex = ord(cmCountdownTimer)) then
|
|
RgClockModeClick(nil);
|
|
|
|
VpClock1.Active := willStart;
|
|
if VpClock1.Active then
|
|
BtnStartStop.Caption := 'Stop' else
|
|
BtnStartStop.Caption := 'Start';
|
|
end;
|
|
|
|
procedure TForm1.CbMilitaryTimeChange(Sender: TObject);
|
|
var
|
|
t: TDateTime;
|
|
begin
|
|
t := VpClock1.Time;
|
|
VpClock1.DigitalOptions.MilitaryTime := CbMilitaryTime.Checked;
|
|
VpClock1.Time := t;
|
|
end;
|
|
|
|
procedure TForm1.CbNewClockFaceChange(Sender: TObject);
|
|
begin
|
|
if CbNewClockFace.Checked then begin
|
|
VpClock1.AnalogOptions.ClockFace.LoadFromFile('clockface.bmp');
|
|
VpClock1.AnalogOptions.HourHandWidth := 2;
|
|
VpClock1.AnalogOptions.MinuteHandWidth := 2;
|
|
VpClock1.AnalogOptions.SecondHandWidth := 1;
|
|
VpClock1.Width := 100;
|
|
VpClock1.Height := 100;
|
|
end else begin
|
|
VpClock1.AnalogOptions.ClockFace := nil;
|
|
VpClock1.AnalogOptions.HourHandWidth := 4;
|
|
VpClock1.AnalogOptions.MinuteHandWidth := 3;
|
|
VpClock1.AnalogOptions.SecondHandWidth := 1;
|
|
VpClock1.Width := 200;
|
|
VpClock1.Height := 200;
|
|
end;
|
|
VpClock1.AnalogOptions.DrawMarks := not CbNewClockFace.Checked;
|
|
if RgDisplayMode.ItemIndex = ord(dmAnalog) then
|
|
VpClock1.Invalidate;
|
|
end;
|
|
|
|
procedure TForm1.EdCountDownTimeChange(Sender: TObject);
|
|
var
|
|
t: TTime;
|
|
begin
|
|
if VpClock1.ClockMode = cmCountDownTimer then
|
|
if TryStrToTime(EdCountdownTime.Text, t) then
|
|
VpClock1.Time := t;
|
|
end;
|
|
|
|
procedure TForm1.FormCreate(Sender: TObject);
|
|
begin
|
|
CbMilitaryTime.Top := CbNewClockFace.Top;
|
|
end;
|
|
|
|
procedure TForm1.RgClockModeClick(Sender: TObject);
|
|
var
|
|
h,m,s,ms: Word;
|
|
begin
|
|
VpClock1.Active := false;
|
|
BtnStartStop.Caption := 'Start';
|
|
VpClock1.ClockMode := TVpClockMode(RgClockMode.ItemIndex);
|
|
case VpClock1.ClockMode of
|
|
cmClock:
|
|
begin
|
|
VpClock1.Time := now;
|
|
VpClock1.Active := true;
|
|
BtnStartStop.Caption := 'Stop';
|
|
end;
|
|
cmTimer:
|
|
VpClock1.Time := 0;
|
|
cmCountdownTimer:
|
|
begin
|
|
DecodeTime(StrToTime(EdCountDownTime.Text), h,m,s,ms);
|
|
VpClock1.HourOffset := h;
|
|
VpClock1.MinuteOffset := m;
|
|
VpClock1.SecondOffset := s;
|
|
end;
|
|
end;
|
|
EdCountDownTime.Visible := VpClock1.ClockMode = cmCountDownTimer;
|
|
LblCountDownTime.Visible := EdCountDownTime.Visible;
|
|
end;
|
|
|
|
procedure TForm1.RgDisplayModeClick(Sender: TObject);
|
|
var
|
|
t: TDateTime;
|
|
begin
|
|
t := VpClock1.Time;
|
|
VpClock1.DisplayMode := TVpClockDisplayMode(RgDisplayMode.ItemIndex);
|
|
case VpClock1.DisplayMode of
|
|
dmAnalog:
|
|
CbNewClockFaceChange(nil);
|
|
dmDigital:
|
|
begin
|
|
VpClock1.Width := 136;
|
|
VpClock1.Height := 30;
|
|
end;
|
|
end;
|
|
CbMilitaryTime.Visible := VpClock1.DisplayMode = dmDigital;
|
|
CbNewClockface.Visible := VpClock1.DisplayMode = dmAnalog;
|
|
|
|
VpClock1.Time := t;
|
|
end;
|
|
|
|
procedure TForm1.VpClock1CountdownDone(Sender: TObject);
|
|
begin
|
|
ShowMessage('Countdown completed.');
|
|
end;
|
|
|
|
|
|
end.
|
|
|