Пример 2. Компонент Timer

 

Создадим приложение, в котором осуществляется перемещение окружности по форме с течением времени.

 

Расположите на форме компонент Timer и три стандартных кнопки. Выберите компонент Timer1 и в окне Object Inspector установите свойство Enabled равным False, это делается для того, чтобы при запуске приложения счётчик оставался выключенным. Для включения и выключения счётчика необходимо написать процедуры, обрабатывающие нажатия на кнопки. При нажатии на первую кнопку счётчик должен включаться, следовательно, по пространству формы должна перемещаться окружность, при нажатии на вторую кнопку счётчик должен отключаться, а окружность должна остановиться на месте. Третья кнопка должна выполнять одновременно функции и первой и второй кнопок. При первом нажатии третьей кнопки счётчик должен включаться, а при втором – выключаться.

 

Вид приложения на этапе разработки:

 

 

Текст файла Unit1.pas

 

unit Unit1;

 

interface

 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, ExtCtrls, StdCtrls;

 

type

  TForm1 = class(TForm)

    Timer1: TTimer;

    Button1: TButton;

    Button2: TButton;

    Button3: TButton;

    procedure Timer1Timer(Sender: TObject);

    procedure FormActivate(Sender: TObject);

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure Button3Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  Form1: TForm1;

  x,y,i: byte;

  dx: byte;

 

implementation

 

{$R *.dfm}

 procedure Ris;

begin

form1.Canvas.Pen.Color:=form1.Color;

form1.Canvas.Ellipse(x,y,x+30,y+30);

x:=x+dx;

form1.Canvas.Pen.Color:=clBlack;

form1.Canvas.Ellipse(x,y, x+30, y+30) ;

end;

 

procedure TForm1.Timer1Timer(Sender: TObject);

begin

Ris;

end;

 

procedure TForm1.FormActivate(Sender: TObject);

begin

x:=20;

y:=20;

dx:=3;

timer1.Interval:=50;

// период возникновения события OnTimer — 0.5 секунд

form1.canvas.brush.color:=form1.color;

 

end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin

if Timer1.Enabled=false then i:=i+1;

Timer1.Enabled:=true;

end;

 

procedure TForm1.Button2Click(Sender: TObject);

begin

if Timer1.Enabled=true then i:=i+1;

Timer1.Enabled:=false;

 

end;

 

procedure TForm1.Button3Click(Sender: TObject);

begin

i:=i+1;

if (i mod 2) =0 then

 Timer1.Enabled:=false

 else

 Timer1.Enabled:=true;

end;

 

end.