[Pas2js] TTimer non visual component for pas2js
Michael Van Canneyt
michael at freepascal.org
Sat Jun 30 16:13:59 CEST 2018
Nice :)
Can I add this to the distribution in a unit timer, with the usual LGPL license ?
Michael.
On Sat, 30 Jun 2018, warleyalex via Pas2js wrote:
> 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/
> _______________________________________________
> Pas2js maillist - Pas2js at lists.freepascal.org
> http://lists.freepascal.org/cgi-bin/mailman/listinfo/pas2js
More information about the Pas2js
mailing list