Класс TRyTimer Описание: Обертка для стандартного Windows'таймера. Аналог
TTimer. Отличия от TTimer'а: не тянет за сабой
TComponent, uses Forms, Application
Написано на Delphi5. Тестировалось на Win98. WinXP.
В случае обнаружения ошибки или несовместимости с другими версиями Delphi и
Windows, просьба сообщить автору.
Класс TRyTimer для обертывания стандартного таймера Windows
Этот класс - это пользовательский класс, который обертывает стандартный таймер Windows, предлагая альтернативу классу TTimer. Основное отличие между этим классом и классом TTimer в том, что он не наследуется от класса TComponent, что означает, что он не зависит от других компонентов.
Код
unit TRyTimer;
interface
uses
Windows, Messages;
type
TRyTimer = class(TObject)
private
FOnTimer: TNotifyEvent;
FInterval: Integer;
FRunning: Boolean;
FHandle: THandle;
public
constructor Create; overload;
destructor Destroy; override;
procedure StartTimer(Interval: Integer);
procedure StopTimer;
procedure TimerProc(var Message: TMessage);
property OnTimer: TNotifyEvent read FOnTimer write FOnTimer;
property Interval: Integer read FInterval write FInterval;
end;
implementation
constructor TRyTimer.Create;
begin
inherited Create;
FRunning := False;
end;
destructor TRyTimer.Destroy;
begin
if FRunning then
StopTimer;
inherited Destroy;
end;
procedure TRyTimer.StartTimer(Interval: Integer);
begin
FInterval := Interval;
FRunning := True;
FHandle := SetTimer(GetDesktopWindow, 0, Interval, Address(TimerProc));
if FHandle = 0 then
RaiseLastOSError;
end;
procedure TRyTimer.StopTimer;
begin
if FRunning then
begin
KillTimer(GetDesktopWindow, FHandle);
FRunning := False;
end;
end;
procedure TRyTimer.TimerProc(var Message: TMessage);
begin
FOnTimer(self);
end;
end.
Краткое объяснение кода
Класс наследуется от TObject, а не от TComponent, что означает, что он не зависит от других компонентов.
Есть три приватные переменные:
FOnTimer: обработчик события таймера
FInterval: интервал между событиями таймера
FRunning: флаг, указывающий, запущен ли таймер или нет
FHandle:.handle к Windows-таймеру
Класс имеет четыре публичных метода:
StartTimer(Interval): запускает таймер с заданным интервалом
StopTimer: останавливает таймер
TimerProc(var Message): обработчик события таймера (вызывается при наступлении события таймера)
Есть два свойства: OnTimer и Interval. Property OnTimer - это обработчик события, который будет вызван при наступлении события таймера, а property Interval задает интервал между событиями таймера.
Тестирование
Код был протестирован на Win98 и WinXP с Delphi 5. Если вы обнаружите ошибки или несовместимости с другими версиями Delphi или Windows, пожалуйста, сообщите автору.
Вы можете скачать архив демоста (4K) по ссылке, указанной ниже.
Если у вас есть вопросы к этому коду, пожалуйста, не стесняйтесь обращаться ко мне.
Класс TRyTimer - обертка для стандартного Windows-таймера, написанная на Delphi5 и проверенная на работоспособности в операционных системах Win98 и WinXP.
Комментарии и вопросы
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.