Advertisement
Guest User

Untitled

a guest
Aug 19th, 2020
35
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.79 KB | None | 0 0
  1. unit Unit1;
  2.  
  3. {$mode objfpc}{$H+}
  4.  
  5. interface
  6.  
  7. uses
  8.   Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, fptimer, EpikTimer;
  9.  
  10. type
  11.  
  12.   TTestTimer = class(TFPTimer)
  13.   private
  14.     FEpikTimer: TEpikTimer;
  15.     function GetRemaining: cardinal;
  16.   public
  17.     constructor Create(AOwner: TComponent); override;
  18.     destructor Destroy; override;
  19.     procedure StartTimer; override;
  20.     procedure StopTimer; override;
  21.     property Remaining: cardinal read GetRemaining;
  22.   end;
  23.  
  24.   { TForm1 }
  25.  
  26.   TForm1 = class(TForm)
  27.     Button1: TButton;
  28.     Button2: TButton;
  29.     Label1: TLabel;
  30.     procedure Button1Click(Sender: TObject);
  31.     procedure Button2Click(Sender: TObject);
  32.   private
  33.     FTimer: TTestTimer;
  34.     procedure OnTimer(Sender: TObject);
  35.   public
  36.  
  37.   end;
  38.  
  39. var
  40.   Form1: TForm1;
  41.  
  42. implementation
  43.  
  44. {$R *.lfm}
  45.  
  46. { TForm1 }
  47.  
  48. procedure TForm1.Button1Click(Sender: TObject);
  49. begin
  50.   FTimer := TTestTimer.Create(nil);
  51.   Ftimer.OnTimer := @OnTimer;
  52.   FTimer.StartTimer;
  53.   Label1.Caption := 'Start';
  54. end;
  55.  
  56. procedure TForm1.Button2Click(Sender: TObject);
  57. begin
  58.   FTimer.StopTimer;
  59.   FreeAndNil(FTimer);
  60. end;
  61.  
  62. procedure TForm1.OnTimer(Sender: TObject);
  63. begin
  64.   Label1.Caption := 'Stop';
  65. end;
  66.  
  67. { TTestTimer }
  68.  
  69. function TTestTimer.GetRemaining: cardinal;
  70. begin
  71.   Result := Interval - trunc(FEpikTimer.Elapsed * 1000);
  72. end;
  73.  
  74. constructor TTestTimer.Create(AOwner: TComponent);
  75. begin
  76.   inherited Create(AOwner);
  77.   FEpikTimer := TEpikTimer.Create(self);
  78. end;
  79.  
  80. destructor TTestTimer.Destroy;
  81. begin
  82.   FEpikTimer.Free;
  83.   inherited Destroy;
  84. end;
  85.  
  86. procedure TTestTimer.StartTimer;
  87. begin
  88.   FEpikTimer.Clear;
  89.   FEpikTimer.Start;
  90.   inherited StartTimer;
  91. end;
  92.  
  93. procedure TTestTimer.StopTimer;
  94. begin
  95.   FEpikTimer.Stop;
  96.   inherited StopTimer;
  97. end;
  98.  
  99.  
  100.  
  101. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement