[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