[Pas2js] TTimer non visual component for pas2js
warleyalex
warleyalex at yahoo.com.br
Sat Jun 30 15:52:36 CEST 2018
This is the TTimer non visual component for pas2js
--------> TTimer <<-----------------
type
TTimer = class(TComponent)
private
FEnabled: Boolean; // True
FInterval: Integer; // 1000
FOnTimer: TNotifyEvent;
FID: Integer;
procedure SetEnabled(Value: Boolean);
procedure SetInterval(Value: Integer);
protected
function DesignEvent: Boolean; virtual;
procedure DoUpdateTimer; virtual;
procedure DoClearTimer; virtual;
procedure DoTimer; virtual;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
{ Specifies whether the timer is enabled }
property Enabled: Boolean read FEnabled write SetEnabled default True;
{ Specifies the interval, in milliseconds, between timer events }
property Interval: Integer read FInterval write SetInterval default
1000;
property Tag;
{ Fired when the timer interval has elapsed }
property OnTimer: TNotifyEvent read FOnTimer write FOnTimer;
end;
implementation
{ TTimer }
constructor TTimer.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FEnabled := True;
FInterval := 1000;
DoUpdateTimer;
end;
destructor TTimer.Destroy;
begin
Enabled := False;
inherited Destroy;
end;
function TTimer.DesignEvent: Boolean;
begin
Result := False;
end;
procedure TTimer.DoUpdateTimer;
begin
FID := window.setInterval(@DoTimer, FInterval);
end;
procedure TTimer.DoClearTimer;
begin
if (FID <> 0) then
begin
window.clearInterval(FID);
FID := 0;
end;
end;
procedure TTimer.SetEnabled(Value: Boolean);
begin
if (Value <> FEnabled) then
begin
if Value then
DoUpdateTimer
else
DoClearTimer;
FEnabled := Value;
end;
end;
procedure TTimer.SetInterval(Value: Integer);
begin
if (Value <> FInterval) then
begin
if Enabled then
begin
Enabled := False;
try
FInterval := Value;
finally
Enabled := True;
end;
end
else
FInterval := Value;
end;
end;
procedure TTimer.DoTimer;
begin
if Assigned(FOnTimer) then
FOnTimer(Self);
end;
-----------------------------------------------------
Example: Creating a clock, with a timer and a Label.
======
a) Enter a label and a timer in the designer.
b) Set the form as you see fit. In the caption of the label, change its name
to 00:00:00
c) Double-click the timer component and place the following command:
Label1.caption: = timetostr (time);
-----------------------------------------------------
Label1 := TLabel.Create(Self);
Timer1 := TTimer.Create(Self);
with Label1 do
begin
Name := 'Label1';
Parent := Self;
Left := 112;
Top := 10;
Width := 44;
Height := 13;
Caption := '00:00:00';
end;
with Timer1 do
begin
Name := 'Timer1';
OnTimer := @Timer1Timer;
end;
-----------------------------------------------------
--
Sent from: http://pas2js.38893.n8.nabble.com/
More information about the Pas2js
mailing list