Постановка задачи. Три шарика, перекрашиваясь поочередно, имити-руют работу светофора.
Реализация. Положите на форму компонент TPanel . Он является несущей конструкцией для компонентов, лежащих на нем. Расположите на нем три компонента типа TShape . Задайте для них свойство StCircle , чтобы они имели форму круга. Свойство Brush.Color компонента TShape используется для задания цвета круга. Расположите два компонента TButton – кнопки «Пуск» и «Стоп». Также положите компонент TTimer . Форма этого проекта приведена на рис. 6.
Рис. 6. Форма проекта «Светофор»
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Panel1: TPanel;
Shape1: TShape;
Shape2: TShape;
Shape3: TShape;
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
down:boolean;
i:integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
down:=true;
i:=1;
timer1.enabled:=false;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
timer1.Enabled:=true;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
timer1.Enabled:=false;
close;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if i=2 then
begin
shape2.Brush.Color:=clyellow;
if down then
begin
shape1.Brush.Color:=clgray;
i:=3;
end
else
begin
shape3.Brush.Color:=clgray;
i:=1;
end;
end
else
begin
if i=1 then
begin
shape1.Brush.Color:=clred;
shape2.Brush.Color:=clgray;
i:=2;
down:=true;
end
else
begin
shape3.Brush.Color:=clgreen;
shape2.Brush.Color:=clgray;
i:=2;
down:=false;
end;
end;
end;
end.
Задание. Положите на форму регулятор TTrackBar для увеличения или уменьшения времени свечения светофора.
В процедуру TForm1.Button1Click(Sender: TObject) добавьте оператор
if (TrackBar1.Position=0) then
ShowMessage(‘Задайте интервал’);
В процедуру TForm1.Button1Click(Sender: TObject) добавьте оператор
Timer1.Interval:=TrackBar1.Position*100;
Множитель 100 не обязателен.