Элемент управления Timer позволяет выполнять определенные действия, например, проверку значений переменных, через заданные интервалы времени.

Использование элемента управления Timer

Элемент управления Timer реагирует на течение времени независимо от действий пользователя и, как правило, применяется для фоновой обработки через определенное время. Типичный пример использования таймера - проверка показания системных часов с целью определить, не пора ли запускать программу или приложение и т.п.

Для изучения примеров, иллюстрирующих использование элемента управления Timer выполните Solution.app в каталоге ...\Samples\Solution Visual FoxPro. В древовидной структуре выберите Controls, затем нажмите Timer.

Элемент управления Timer имеет Свойство Interval, которое задает интервал времени в миллисекундах между срабатываниями таймера. Если срабатывание таймера не заблокировано, то через приблизительно одинаковые промежутки времени будет наступать событие, названное, соответственно, Timer. Свойство Interval имеет некоторые ограничения, которые нужно учитывать при программировании:

  • Свойство может принимать значения от 0 до 2 147 483 647 миллисекунд включительно, таким образом максимальный интервал может составлять около 596.5 часов (более 24 суток).

  • Заданный свойством интервал не гарантирует точность. Чтобы обеспечить точность, таймер должен проверять системные часы, когда требуется, а не пытаться отследить собственное.

  • Хотя свойство Interval задается в миллисекундах, фактическая точность зависит от системного таймера. Например, для Windows XP или более поздних ОС интервал в 1 миллисекунду может вызвать 1000 событий в секунду. На операционных системах до Windows XP, система генерирует 18 тактов системных часов в секунду, таким образом, несмотря на то, что свойство Interval и задается в миллисекундах, истинная точность интервала будет не выше, чем одна восемнадцатая секунды. Для подробной информации о системных таймерах и импульсе сигнала времени таймера обратитесь к онлайновой справочной системе MSDN.

  • Несмотря на то, что таймер срабатывает через заданный интервал, событие Timer не всегда может быть обработано немедленно, так как в Visual FoxPro не может быть начато выполнение следующей процедуры, пока не завершилась предыдущая. Таким образом, если к моменту срабатывания таймера Ваше приложение выполняет некие длительные вычисления, опросы и т.п., обработка этого события таймера будет поставлена в очередь.

Размещение элемента управления Timer на форме

Таймера помещается на форму так же, как и любой другой элемент управления: в панели инструментов Form Controls нажмите кнопку Timer и разместите элемент управления в нужном месте формы.

Таймер отображается на форме на этапе разработки, его можно выделить, проверить и задать необходимые свойства, написать процедуры обработки событий. Во время выполнения таймер невидим и его позиция, и размер являются несущественными.

Инициализация элемента управления Timer

Элемент управления Timer имеет два ключевых свойства.

Свойство Установка

Enabled

Если Вы хотите, чтобы таймер начал работать с момента загрузки формы, установите это свойство в .T. (истина). В противном случае оставьте его установленным в .F. (ложь). Для запуска таймера можно использовать внешнее событие, например, нажатие кнопки и т.п.

Interval

Число миллисекунд между событиями таймера..

Обратите внимание на отличие свойства Enabled таймера от аналогичного свойства других объектов. Для большинства объектов свойство Enabled определяет, может ли объект реагировать на событие, вызванное пользователем. У таймера свойство Enabled, предназначено для запуска и остановки элемента управления.

Помните, что таймер срабатывает периодически. Свойство Interval не определяет как долго будет идти выполнение кода, оно определяет, как часто код будет срабатывать. Длина интервала зависит от того, какая точность Вам необходима. Поскольку существует некоторый процент потенциальных ошибок, устанавливайте интервал в половину желаемой точности (см. пример ниже).

NoteПримечание

Чем чаще срабатывает таймер, тем больше процессорного времени будет использовано на обработку этого события. Это может значительно замедлить выполнение приложения. Не задавайте без большой необходимости слишком маленький интервал.

Обработка срабатывания таймера

Событие Timer. Обычно, реакцией на это событие является проверка некоторого общего условия, например, системных часов.

Цифровые часы – очень простое, но полезное приложение, использующее элемент управления Таймер. С понимаем работы приложения появляется возможность расширения функциональности элемента, например, добавление функций будильника или секундомера или другого устройства синхронизации..

Приложение, реализующее часы состоит из таймера и метки с рамкой. На этапе разработки это выглядит примерно так:

Цифровые часы

FoxProFormLabel screenshot

Во время выполнения таймер невидим.

Элемент управления Свойство Установка

lblTime

Caption

 

Timer1

Interval

500 (полсекунды)

Timer1

Enabled

True (истина)

Единственная процедура в приложении это процедура события Timer:

 CopyCode imageСкопировать код
IF THISFORM.lblTime.Caption != Time()
   THISFORM.lblTime.Caption = Time()
ENDIF

Свойство Interval установлено равным 500 миллисекундам, следуя описанному выше правилу о том, что интервал рекомендуется задавать вдвое меньшим, чем желаемая точность. Желаемая точность в данном случае - 1 секунда. Можно сделать обновление данных метки дважды в секунду. Однако, в этом случае может появиться нежелательное мерцание, так что этого не рекомендуется делать.

Смотрите также