Delphi. Таймер TTimer

Компоненты   12 января 2013  Автор статьи: admin 

Компонент TTimer в Delphi позволяет регулярно выполнять определенные действия с определенным временным интервалом. В этом уроке мы и рассмотрим данный компонент.
Научимся создавать и настраивать данный компонент в Design-time. Для этого кинем на форму компонент TTimer с вкладки System панели Tool Palette. Выглядит он следующим образом:
Компонент TTimer Delphi
TTimer является невизуальным компонентом, поэтому данную иконку в самой программе мы не увидим. Рассмотрим его свойства на панеле Object Inspector:

Enabled Это свойство отвечает за состояние работы таймера. Если его значение — true, то таймер работает, что означает, что его работа начнется сразу после запуска программы. В противном случае (false) таймер будет находится в неактивном состоянии.
Interval Интервал времени в миллисекундах между каждым выполнением действий. Это ожидание таймера будет происходить перед каждым выполнением.
Name Имя компонента.

Для того чтобы указать сами действия для таймера, необходимо воспользоваться единственным событием таймера — OnTimer. Выглядит оно следующим образом:
[cc lang=»delphi»]procedure TForm1.Timer1Timer(Sender: TObject);
begin
// Действия, которые должен выполнять таймер
end;[/cc]
Например вывод обыкновенного сообщения на экран будет выглядеть таким образом:
[cc lang=»delphi»]procedure TForm1.Timer1Timer(Sender: TObject);
begin
ShowMessage(‘Cybern.ru’);
end;[/cc]
Как видите, в работе с таймером нет ничего сложного. Теперь научимся создавать его в режиме Run-time, т.е. непосредственно в программном коде, а не визуально на форме приложения.
Создавать таймер мы будем внутри события OnClick у кнопки Button1, т.е. таким образом какое-либо действие этого таймера начнет выполняться при нажатии на определенную кнопку.
[cc lang=»delphi»]procedure TForm1.Button1Click(Sender: TObject);
var
MyTimer: TTimer; // Объявляем экземпляр класса TTimer
begin
MyTimer := TTimer.Create(Form1);
// Создаем таймер. Конструктору Create необходимо передать владельца (родителя таймера). Укажем форму программы
MyTimer.OnTimer := MyTimerEvent;
// Указываем событие для таймера. Оно должно быть вида procedure(Sender: TObject) и являться методом какого-либо класса.
// В нашем случае — это метод MyTimerEvent класса нашей формы TForm1, который мы создали вручную.
// Сразу после этого таймер запускается. Если после создания запускать таймер не нужно, то можно указать свойству Enabled значение false.
// А когда вновь потребуется запустить таймер, можно передать этому значению true.
MyTimer.Interval := 1500; // Интервал таймера
end;[/cc]
В качестве события OnTimer для нашего таймера необходимо использовать метод какого-либо класса. Поэтому мы создадим метод procedure MyTimerEvent(Sender: TObject) у нашей формы (класс TForm1):
[cc lang=»delphi»] TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure MyTimerEvent(Sender: TObject); // Будущее событие для таймера, которое является методом класса нашей формы.
end;[/cc]
Cам метод будет выглядеть так:
[cc lang=»delphi»]procedure MyTimerEvent(Sender: TObject);
begin
ShowMessage(‘Cybern.ru is the best web resource about programming.’); // Выводим сообщение в таймере
end;[/cc]
Часто требуется сделать так, чтобы таймер выполнил указанные в его событии OnTimer действия определенное количество раз, после чего выключился. Реализовать это просто. Достаточно завести какую-либо глобальную переменную типа Integer, которая будет играть роль счетчика выполнения таймера:
[cc lang=»delphi»]var
Form1: TForm1;
a: integer; // Счетчик выполнения таймера[/cc]
Перед запуском таймера мы обнулим эту переменную:
[cc lang=»delphi»]a := 0;[/cc]
А в обработчике таймера (событии OnTimer) будем каждый раз увеличивать эту переменную на единицу, а также будем проверять, превысила ли эта переменная определенный лимит:
[cc lang=»delphi»]procedure TForm1.MyTimerEvent(Sender: TObject);
begin
ShowMessage(‘Cybern.ru is the best web resource about programming.’); // Выводим сообщение в таймере
Inc(a);
if a > 5 then
begin
a := 0;
(Sender as TTimer).Enabled := False; // Обращаемся к таймеру через Sender и выключаем его.
end;
end;[/cc]
В общем-то, про таймер мало чего еще можно рассказать, поэтому мы закончим наш урок. Как всегда, скачать исходный код примера можно по этой ссылке.

  • Ирина

    скачала код примера по ссылке, не работает

    [DCC Fatal Error] Project1.dpr(5): F1026 File not found: ‘Vcl.Forms.dcu’

Научиться программировать

  • на Delphi

  • на Java

  • на C++