Программный Файл: ...\Samples\Solution\Controls\Timer\Swatch.scx

Данный Пример построен на использовании Класса Секундомера (Stopwatch Class).

Класс Секундомера.

Рассматриваемый Класс Секундомера построен на основе базового класса Таймера (Timer) и нескольких объектов типа Label. Объект Таймера увеличивает числовое значение пользовательского Свойства Класса и устанавливает соответствующее значение свойства Caption (для отображения соответствующих значений секундомера).

В методе Start данного класса устанавливается значение свойства Enabled используемого таймера,  = true (.T.). В методе6 Stop устанавливается значение указанного свойства Enabled, = false (.F.). А  завершающий метод Reset устанавливает значение Таймера =  0, (останавливает таймер, секундомер).

Характеристики Свойств Класса Секундомера:
Контрол (компонента класса) Свойство Значение

lblSeconds

Caption

00

lblColon1

Caption

:

lblMinutes

Caption

00

lblColon2

Caption

:

lblHours

Caption

00

tmrSWatch

Interval

1000

Форма Секундомера

Демонстрационная Форма Секундомера содержит Объект, порожденный рассматриваемым классом Секундомера (Stopwatch class), на форме также имеются кнопки Управления секундомером. Основной программный Код содержится в Коде событий Click, в первой кнопке вызываются соответствующие методы Start и Stop класса секундомера. Во второй кнопке выполняется метод Reset - очистка объектов отображения.

Защищенные Свойства и Методы

Рассматриваемый Пример иллюстрирует также использование Защищенных свойств и методов создаваемых Классов. Класс Секундомера содержит три (3) защищенных свойства: nSec, nMin, nHour; и один защищенный метод: UpdateDisplay.

NoteСовет

Для отображения характеристик указанных Свойств и Методов выберите подпункт Class Info из системного подменю Class.

Защищенные свойства используются для внутренних вычислений в защищенном методе UpdateDisplay ключевого события Timer рассматриваемого Класса. Указанный метод UpdateDisplay устанавливает отображаемое свойство Сaption, которое содержит текущее время Секундомера.

UpdateDisplay, метод
Программный Код Комментарии
CopyCode imageКопировать Код
cSecDisplay = ALLTRIM(STR(THIS.nSec))
cMinDisplay = ALLTRIM(STR(THIS.nMin))
cHourDisplay = ALLTRIM(STR(THIS.nHour))

Выполняется Конвертация числовых значений Секундомера в соответствующие символьные значения объектов отображения.

CopyCode imageКопировать Код
THIS.lblSeconds.Caption = ;
IIF(THIS.nSec < 10, ;
"0" ,"") + cSecDisplay
THIS.lblMinutes.Caption = ;
IIF(THIS.nMin < 10, ;
"0", "") + cMinDisplay
THIS.lblHours.Caption = ;
IIF(THIS.nHour < 10, ;
"0", "") + cHourDisplay

Выполняется добавление лидирующих Нулей если текущее значение рассматриваемого показателя меньше чем 10 (<10).

В следующем списке приводятся фрагменты программного Кода ключевого События: tmrSWatch.Timer:

Событие Timer
Программный Код Комментарии
CopyCode imageКопировать Код
THIS.Parent.nSec = THIS.Parent.nSec + 1
IF THIS.Parent.nSec = 60
THIS.Parent.nSec = 0
THIS.Parent.nMin = ;
THIS.Parent.nMin + 1
ENDIF

Увеличивает значение свойства nSec каждый раз, при активации События Timer: в каждую Секунду. Если значение свойства nSec = 60, то значение очищается, = 0, а значение другого свойства: nMin - увеличивается на 1 (+1).

CopyCode imageКопировать Код
IF THIS.Parent.nMin = 60
THIS.Parent.nMin = 0
THIS.Parent.nHour = ;
THIS.Parent.nHour + 1
ENDIF
THIS.Parent.UpdateDisplay

Если значение свойства nMin = 60, то по=аналогии, значение очищается, = 0, а значение следующего свойства: nHour увеличивается на 1 (+1).

Вызывается метод UpdateDisplay, который отображает текущее значение рассмотренных свойств.

Класс Секундомера имеет три незащищенных метода: Start, Stop, Reset. Пользователь может использовать указанные методы, чтобы напрямую управлять данным Секундомером.

Метод Start содержит следующий фрагмент программного Кода:

CopyCode imageКопировать Код
THIS.tmrSWatch.Enabled = .T.

Метод Stop содержит следующий фрагмент программного Кода:

CopyCode imageКопировать Код
THIS.tmrSWatch.Enabled = .F.

Метод Reset устанавливает нулевые значения защищенных Свойств и вызывает защищенный метод:

CopyCode imageКопировать Код
THIS.nSec = 0
THIS.nMin = 0
THIS.nHour = 0
THIS.UpdateDisplay

Пользователь не может непосредственно изменить значения указанных Свойств и вызвать указанный Метод (UpdateDisplay). Однако он может выполнить требуемые вычисления и установки в программном Коде метода Reset.

См. также