unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm2 =
class(TForm)
Shape1: TShape;
Button1: TButton;
Button2: TButton;
Button3: TButton;
SRot : TShape;
SGelb : TShape;
SGruen : TShape;
Timer1 : TTimer;
procedure Button3Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
FPhase: Integer;
FZeit: Integer;
procedure ZeichneAmpelBild;
procedure SetPhase( Value : Integer );
procedure SetZeit( Value : Integer );
public
{ Public-Deklarationen }
property Phase : Integer
read FPhase
write SetPhase;
property Zeit : Integer
read FZeit
write SetZeit;
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
begin
Phase := Phase + 1;
// <--- hier wird automatisch SetPhase aufgerufen
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
FPhase := 1;
FZeit := 1;
ZeichneAmpelBild;
end;
{ Rr }
procedure TForm2.ZeichneAmpelBild;
begin
case
Phase
of
1:
// Rote Ampel
begin
SRot.Brush.Color := clRed;
// leuchtendes Rot
SGelb.Brush.Color := clOlive;
// dunkles Gelb
SGruen.Brush.Color := clGreen;
// dunkles Grün
end;
2:
// Rot-Gelbe Ampel
begin
SRot.Brush.Color := clRed;
// leuchtendes Rot
SGelb.Brush.Color := clYellow;
// leuchtendes Gelb
SGruen.Brush.Color := clGreen;
// dunkles Grün
end;
3:
// Grüne Ampel
begin
SRot.Brush.Color := clMaroon;
// dunkles Rot
SGelb.Brush.Color := clOlive;
// dunkles Gelb
SGruen.Brush.Color := clLime;
// leuchtendes Grün
end;
4:
// Gelbe Ampel
begin
SRot.Brush.Color := clMaroon;
// dunkles Rot
SGelb.Brush.Color := clYellow;
// leuchtendes Gelb
SGruen.Brush.Color := clGreen;
// dunkles Grün
end;
end;
end;
procedure TForm2.Button3Click(Sender: TObject);
begin
Close;
end;
procedure TForm2.SetPhase(Value: Integer);
begin
if
( Value <> FPhase )
then
begin
if
( Value > 4 )
or
( Value < 1 )
then
FPhase := 1
else
FPhase := Value;
ZeichneAmpelBild;
end;
end;
procedure TForm2.SetZeit(Value: Integer);
begin
if
( Value > 12 )
or
( Value < 1 )
then
FZeit := 1
else
FZeit := Value;
case
FZeit
of
1..5 :
Phase := 1;
// <--- hier wird automatisch SetPhase aufgerufen
6 :
Phase := 2;
// <--- hier wird automatisch SetPhase aufgerufen
7..11:
Phase := 3;
// <--- hier wird automatisch SetPhase aufgerufen
12 :
Phase := 4;
// <--- hier wird automatisch SetPhase aufgerufen
end;
end;
procedure TForm2.Timer1Timer(Sender: TObject);
begin
Zeit := Zeit + 1;
// <--- hier wird automatisch SetZeit aufgerufen
end;
end.