TRxTimerList Component

Unit
TimerLst

Description
Компонента предназначена для вызова пользовательских методов для обработчки события через заданные промежутки времени. Компонента поддерживает функциональность, аналогичную компоненте TTimer, но позволяет использовать один таймер Windows для всей очереди событий, хранящейся в списке Events (элементы типа TRxTimerEvent), сохраняя таким образом системные ресурсы, особенно в 16-битных приложениях. Каждое событие в очереди может быть активным или неактивным (свойство Enabled). Интервал вызова обработчиков задается в миллисекундах и имеет тип Longint, т.е. не имеет ограничения на длину интервала таймера Windows в 65535 мсек.

Вы можете создавать события в дизайнере с помощью редактора компоненты TRxTimerList. Любое событие может быть "однократным", т.е. после одного его срабатывания через заданное время оно становится неактивным (в зависимости от значения свойства Cycled).
При срабатывании любого из активных событий дополнительно к его обработчику OnTimer будет вызван обработчик события OnTimers компоненты, которому дополнительно передается значение свойства Handle события. Для получения события из списка по его идентификатору Handle используйте метод ItemByHandle.

Значение Handle возвращается при динамическом создании события методом Add. Для удаления события предназначен метод Delete. Очистить весь список можно вызовом метода Clear. Свойство Active определяет активность очереди событий.
Выполнение метода Activate аналогично присвоению Active := True, а метод Deactivate идентичен присвоению Active := False.

После того, как все события будут обработаны (т.е. свойство Enabled для каждого будет установлено в False), значение свойства Active самостоятельно установится в False. Чтобы отследить это, используйте событие OnFinish.



Declaration
property Events: TList;

Description
Список, в котором содержатся ссылки на события, определенные классом TRxTimerEvent. Свойство предназначено для внутреннего использования, и в процессе работы компоненты порядок событий в этом списке может меняться.
Используйте для доступа к данным событий метод ItemByHandle, для динамического добавления новых событий — метод Add.



Declaration
function ItemByHandle(AHandle: Longint): TRxTimerEvent;

Description
Метод возвращает объект класса TRxTimerEvent из списка Events по заданному идентификатору Handle (Идентификатор Handle может быть получен при динамическом создании события методом Add). В случае, если в списке не окажется события с таким Handle, будет возвращено значение Nil.



Declaration
function Add(AOnTimer: TNotifyEvent; AInterval: Longint; ACycled: Boolean): Longint;

Description
Метод позволяет динамически добавить к списку событие TRxTimerEvent с обработчиком AOnTimer и временем запуска через интервал времени AInterval (мсек). Значение ACycled будет присвоено свойству Cycled создаваемого события.

В качестве результата будет возвращен Handle созданного события.



Declaration
property OnTimers: TAllTimersEvent;

Description
Вызывается при обработке любого события из списка Events. В качестве параметра передается идентификатор Handle обрабатываемого события.



Declaration
type
TAllTimersEvent = procedure(Sender: TObject; Handle: Longint) of object;
Description
Определят процедурный тип для обработчика события OnTimers компоненты TRxTimerList.



Declaration
procedure Delete(AHandle: Longint);

Description
Метод удаляет событие из списка по заданному идентификатору Handle.


Declaration
procedure Clear;

Description
Метод очищает весь список событий Items.


Declaration
procedure Deactivate;

Description
Метод останавливает выполнение очереди событий. Его действие идентично Active := False.


Declaration
property OnFinish: TNotifyEvent;

Description
Вызывается при установке значения Active в False. Т.к. значение Deactivate списка выполняется автоматически после завершения отработки последнего события, можно использовать этот вызов для контроля за полной отработкой всех событий.


Declaration
procedure Activate;

Description
Метод активизирует выполнение очереди событий. Его действие идентично Active := True.