pascalabcnet/bin/Lib/Timers.pas
Mikhalkovich Stanislav 18a7395641 Timers: TimerProc -> OnTimer
Cartesian -> CartesianPower
GraphWPF - Arrow
2023-04-09 19:08:54 +03:00

96 lines
2.5 KiB
ObjectPascal
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Unit Timers;
(*
Обертка для класса System.Timers.Timer
(c) Брагилевский В.Н. 2007
Сохранен интерфейс класса Timer из PascalABC
за исключением функции Handle.
*)
interface
uses System;
type
/// Класс таймера
Timer = class
private
_timer: System.Timers.Timer;
_procedure: ()->();
procedure SetEnabled(_enabled: boolean);
function GetEnabled: boolean;
procedure SetInterval(_interval: integer);
function GetInterval: integer;
procedure TimerHandler(sender: object; e: System.Timers.ElapsedEventArgs);
public
/// Создает таймер с интервалом срабатывания ms миллисекунд и обработчиком TimerProc
constructor Create(ms: integer; TimerProc: procedure := nil);
/// Запускает таймер
procedure Start;
/// Останавливает таймер
procedure Stop;
/// Запущен ли таймер
property Enabled: boolean read GetEnabled write SetEnabled;
/// Интервал срабатывания таймера
property Interval: integer read GetInterval write SetInterval;
///--
property TimerProc: ()->() read _procedure write _procedure;
/// Событие таймера
property OnTimer: ()->() read _procedure write _procedure;
end;
/// Создать и запустить таймер, вызывающий процедуру TimerProc каждые ms миллисекунд
function CreateTimerAndStart(ms: integer; TimerProc: procedure): Timer;
implementation
function CreateTimerAndStart(ms: integer; TimerProc: procedure): Timer;
begin
Result := new Timer(ms,TimerProc);
Result.Start;
end;
procedure Timer.TimerHandler(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 += TimerHandler;
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;
end.