pascalabcnet/TestSuite/CompilationSamples/Timers.pas
Mikhalkovich Stanislav f3851d787f Release 3.8.3.3257
2023-04-09 19:27:19 +03:00

96 lines
2.5 KiB
ObjectPascal
Raw 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.