Hallo,
ich hab auch mal ne Ampel aus Spass programmiert.
Ich werde dir zwar nicht den kompletten Code geben, aber ein paar Anhaltspunkte:
z. B. Timer
in OnTimer des Timers hab ich es so gelöst:
Delphi-Quellcode:
procedure TForm1.Timer_AmpelTimer(Sender: TObject);
begin
Label_Zustand.Caption := IntToStr(Zustand);
case Zustand of
1:
begin
Shape_rot.Brush.Color := Farbe_Rot;
Shape_gelb.Brush.Color := Farbe_Gelb;
Shape_gruen.Brush.Color := Farbe_Aus;
Zustand := 2;
end;
2:
begin
{...}
Zustand := 3;
end;
{...}
Wie du siehst, hab ich 3 Shapes verwendet und schalte, je nach Zustand, die Farbe der einzelnen Shapes um.
Grunde ist es eine Endlos-Schleife.
Zustand 1 = Ampel rot/gelb
Zustand 2 = Ampel gruen
Zustand 3 = Ampel gelb
Zustand 4 = Ampel rot
je nach Timer-Intervall läuft die Ampel schneller oder langsamer.
Vielleicht hilft dir das ja.
P.S.: Farbe_Rot, Farbe_Gelb und Farbe_Aus sind Konstanten. Es ginge auch mit clRed, clYellow und clBlack (= Farbe_Aus bei mir)