Управление отображением текущего времени в программе. Компонент TTimer
Теоретические сведения
Иногда в приложениях, работающих в графическом интерфейсе Windows, возникает необходимость отображения текущего времени суток (часы:минуты:секунды). Для реализации этой задачи в аппаратуре компьютера предусмотрен доступ к таймеру.
Также с помощью таймера можно организовать параллельное выполнение задач с использованием различных средств.
Программируемый таймер предназначен для получения программно управляемых временных задержек и генерации функций, которые задают время. Программируемый таймер разрешает формировать заданные интервалы времени независимо от быстродействия вычислительной системы. По умолчанию операционная система Windows вызывает прерывание от таймера 18,2 раза в секунду.
Система Delphi представляет для пользователя компонент TTimer, который обеспечивает выполнение прерывания от таймера. С помощью компонента TTimer можно организовать параллельное выполнение в программе.
В данном примере показано как использовать компонент TTimer для вывода на форме текущего времени. Также показано как можно руководить таймером, останавливая и продолжая показ текущего времени.
Выполнение
1. Создание проекта как VCL Form Application в Embarcadero RAD Studio — Delphi.
Загрузить Delphi.
Создать проект как VCL Form Application.
2. Создание основной формы.
Создать форму, как показано на рисунке 1.
Используя палитру инструментов Tool Palette разместить на форме следующие компоненты:
- из вкладки Standard компонент типа TLabel. Создается объект (экземпляр класса) с именем Label1;
- из вкладки Standard два компонента типа TButton. Создается два объекта с именами Button1 и Button2;
- из вкладки System компонент типа TTimer (рисунок 1). Создается объект с именем Timer1.
Рис. 1. Размещение компонента TTimer и других компонент на форме
3. Настройка компонент типа TLabel и TButton.
Настроить следующие свойства компонент Label1 и Button1:
- в компоненте Label1 свойство Caption = «—«;
- в компоненте Button1 свойство Caption = «Go«;
- в элементе управления Button2 свойство Caption = «Stop«.
Если пользователь сделает клик на кнопке Button1 (начало отсчета), таймер, в котором отображаются часы, будет включен. При клике на кнопке Button2 время будет остановлено.
На рисунке 2 отображен вид формы после настройки компонент.
Рис. 2. Форма программы после настройки компонент
4. Настройка компонента типа TTimer.
В компоненте TTimer свойство Interval установить в значение 100 (рисунок 3) или в любое другое значение. Значение Interval измеряется в миллисекундах. Interval задает частоту вызова обработчика события, то есть частоту изменения значения часов реального времени.
Также свойство Enabled установить в значение False.
Рис. 3. Свойство Interval компонента Timer1
5. Программирование обработчика события OnTimer.
В обработчик события OnTimer вписывается собственный программный код, который отображает часы реального времени.
Листинг обработчика Timer1Timer() события OnTimer следующий:
procedure TForm1.Timer1Timer(Sender: TObject); begin Label1.Caption := TimeToStr(Time); end;
В вышеприведенном коде использована функция TimeToStr() для преобразования текущего времени (свойство Time) в строку.
6. Программирование событий клика на кнопках Button1 и Button2.
Для того, чтобы время начало отображаться, нужно активировать таймер. Для активации/деактивации таймера в компоненте Timer1 используется свойство Enabled.
Обработчик события клика на кнопке Button1 имеет вид:
procedure TForm1.Button1Click(Sender: TObject); begin Timer1.Enabled := true; end;
Чтобы остановить таймер, нужно свойство Enabled компонента Timer1 установить в значение false.
procedure TForm1.Button2Click(Sender: TObject); begin Timer1.Enabled := false; end;
7. Запуск программы на выполнение.
После запуска программы на выполнение окно формы будет иметь вид как изображено на рисунке 4.
Рис. 4. Программа в режиме выполнения
Если в программе нужно постоянно отображать текущее время, тогда строку
timer1.Enabled := true;
можно разместить в начале загрузки формы в обработчике события OnActivate.