[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