2019-08-15 23:54:13 +03:00
|
|
|
|
Unit Timers;
|
2015-05-14 22:35:07 +03:00
|
|
|
|
|
|
|
|
|
|
(*
|
2015-12-28 14:25:15 +03:00
|
|
|
|
Обертка для класса System.Timers.Timer
|
|
|
|
|
|
(c) Брагилевский В.Н. 2007
|
2015-05-14 22:35:07 +03:00
|
|
|
|
|
2015-12-28 14:25:15 +03:00
|
|
|
|
Сохранен интерфейс класса Timer из PascalABC
|
|
|
|
|
|
за исключением функции Handle.
|
2015-05-14 22:35:07 +03:00
|
|
|
|
*)
|
|
|
|
|
|
|
|
|
|
|
|
interface
|
|
|
|
|
|
|
|
|
|
|
|
uses System;
|
|
|
|
|
|
|
|
|
|
|
|
type
|
2015-12-28 14:25:15 +03:00
|
|
|
|
/// Класс таймера
|
2015-05-14 22:35:07 +03:00
|
|
|
|
Timer = class
|
|
|
|
|
|
private
|
|
|
|
|
|
_timer: System.Timers.Timer;
|
2019-08-15 23:54:13 +03:00
|
|
|
|
_procedure: ()->();
|
2015-05-14 22:35:07 +03:00
|
|
|
|
procedure SetEnabled(_enabled: boolean);
|
|
|
|
|
|
function GetEnabled: boolean;
|
|
|
|
|
|
procedure SetInterval(_interval: integer);
|
|
|
|
|
|
function GetInterval: integer;
|
|
|
|
|
|
procedure OnTimer(sender: object; e: System.Timers.ElapsedEventArgs);
|
|
|
|
|
|
public
|
2015-12-28 14:25:15 +03:00
|
|
|
|
/// Создает таймер с интервалом срабатывания ms миллисекунд и обработчиком TimerProc
|
2019-08-15 23:54:13 +03:00
|
|
|
|
constructor Create(ms: integer; TimerProc: procedure := nil);
|
2015-12-28 14:25:15 +03:00
|
|
|
|
/// Запускает таймер
|
2015-05-14 22:35:07 +03:00
|
|
|
|
procedure Start;
|
2015-12-28 14:25:15 +03:00
|
|
|
|
/// Останавливает таймер
|
2015-05-14 22:35:07 +03:00
|
|
|
|
procedure Stop;
|
2015-12-28 14:25:15 +03:00
|
|
|
|
/// Запущен ли таймер
|
2015-05-14 22:35:07 +03:00
|
|
|
|
property Enabled: boolean read GetEnabled write SetEnabled;
|
2015-12-28 14:25:15 +03:00
|
|
|
|
/// Интервал срабатывания таймера
|
2015-05-14 22:35:07 +03:00
|
|
|
|
property Interval: integer read GetInterval write SetInterval;
|
2019-08-15 23:54:13 +03:00
|
|
|
|
/// Интервал срабатывания таймера
|
|
|
|
|
|
property TimerProc: ()->() read _procedure write _procedure;
|
2015-05-14 22:35:07 +03:00
|
|
|
|
end;
|
2019-08-15 23:54:13 +03:00
|
|
|
|
|
2020-08-09 18:15:34 +03:00
|
|
|
|
/// Создать и запустить таймер, вызывающий процедуру TimerProc каждые ms миллисекунд
|
2019-08-18 00:16:39 +03:00
|
|
|
|
function CreateTimerAndStart(ms: integer; TimerProc: procedure): Timer;
|
2015-05-14 22:35:07 +03:00
|
|
|
|
|
|
|
|
|
|
implementation
|
|
|
|
|
|
|
2019-08-18 00:16:39 +03:00
|
|
|
|
function CreateTimerAndStart(ms: integer; TimerProc: procedure): Timer;
|
2019-08-15 23:54:13 +03:00
|
|
|
|
begin
|
|
|
|
|
|
Result := new Timer(ms,TimerProc);
|
|
|
|
|
|
Result.Start;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure Timer.OnTimer(sender: object; e: System.Timers.ElapsedEventArgs);
|
|
|
|
|
|
begin
|
|
|
|
|
|
_procedure;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
constructor Timer.Create(ms: integer; TimerProc: procedure);
|
|
|
|
|
|
begin
|
|
|
|
|
|
_timer := new System.Timers.Timer(ms);
|
|
|
|
|
|
_procedure := TimerProc;
|
|
|
|
|
|
_timer.Elapsed += OnTimer;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure Timer.Start;
|
|
|
|
|
|
begin
|
|
|
|
|
|
Enabled := True;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure Timer.Stop;
|
|
|
|
|
|
begin
|
|
|
|
|
|
Enabled := False;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure Timer.SetEnabled(_enabled: boolean);
|
|
|
|
|
|
begin
|
|
|
|
|
|
_timer.Enabled := _enabled;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
function Timer.GetEnabled: boolean;
|
|
|
|
|
|
begin
|
|
|
|
|
|
Result := _timer.Enabled;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure Timer.SetInterval(_interval: integer);
|
|
|
|
|
|
begin
|
|
|
|
|
|
_timer.Interval := _interval;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
function Timer.GetInterval: integer;
|
|
|
|
|
|
begin
|
|
|
|
|
|
Result := Round(_timer.Interval);
|
|
|
|
|
|
end;
|
2015-05-14 22:35:07 +03:00
|
|
|
|
|
|
|
|
|
|
end.
|