§ 17. Анимация

17.1. Компонент Timer

Компонент таймер — Timer позволяет задавать в приложении интервалы времени. На панели компонентов System компонент таймер изображен в виде , имя объекта Timer. Компонент Timer, помещенный на форму, получает имя  TimerN, где N — номер 1, 2, 3… (пример 17.1).

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

Для таймера доступно единственное событие — OnTimer. В обработчике этого события записываются необходимые команды. Событие наступает по истечении реального времени эквивалентного значению свойства Interval для таймера. До тех пор, пока таймер не будет выключен, это событие будет наступать вновь и вновь.

Пример 17.3. Создать приложение, позволяющее вводить текущее время каждую секунду.

Этапы выполнения задания

  1. Поместить на форму компоненты Timer, Label, и два компонента Button.
  2. Изменить свойство Caption у компонента Button1 на «Старт».
  3. Изменить свойство Caption у компонента Button2 на «Стоп».
  4. Очистите свойство Caption у компонента Label1.
  5. Изменить свойство Enabled у компонента Timer1 на false.
  6. Написать обработчики событий OnClick для компонентов Button1 и Button2, которые будут запускать и останавливать таймер.
Написать обработчик событий OnTimer для компонент Timer, который будет выводить системное время. Для вывода системного времени можно использовать функцию TimeToStr(Time()), которая преобразует системное время Time() в строковое представление.

Пример 17.1. Компонент Timer на форме:

Пример 17.2. Свойства компонента Timer:

Свойство

Назначение

Interval

Задает период времени  срабатывания таймера в миллисекундах

Enabled

Значение true у этого свойства показывает, что таймер запущен

Пример 17.3. Форма на этапе проектирования:

Обработчики события OnClick для компонентов Button1 и Button2.

void __fastcall TForm1::
Button1Click(TObject *Sender)

{

  Timer1 -> Enabled = true;

}

//---------------------------

void __fastcall TForm1::
Button2Click(TObject *Sender)

{

  Timer1 -> Enabled = false;

} 

Обработчик события OnTimer.

void __fastcall TForm1::
Timer1Timer(TObject *Sender)

{

  Label1 ->Caption = TimeToStr(Time());

}

Работающее приложение:

Для вывода времени можно воспользоваться другой функцией[1]


[1] Со значениями параметров этой функции можно познакомиться в приложении

   FormatDateTime("hh:nn:ss",Time())   

Эта функция позволяет изменить формат вывода даты/времени. Например, для того чтобы вывести время так:

нужно использовать функцию со следующими параметрами:

    FormatDateTime("dddd, dd mmmm yyyy, 
    hh:mm:ss:zz", Now());   

Время срабатывания таймера изменить на 100.