Ich kann Dich schwer einschätzen, aber das ist Dir vermutlich noch zu hoch. Trotzdem mal eine kleine Klasse:
Delphi-Quellcode:
type
TAmpel = class;
TAmpelphase = (apRot, apGelbRot, apGruen, apGelb);
TOnNextPhase = procedure(Sender: TAmpel; Phase: TAmpelphase) of object;
TAmpel = class
private
FPhase: TAmpelphase;
FOnNextPhase: TOnNextPhase;
public
procedure NextPhase;
property OnNextPhase: TOnNextPhase read FOnNextPhase write FOnNextPhase;
end;
...
procedure TAmpel.NextPhase;
begin
case FPhase of
apRot:
FPhase := apGelbRot;
apGelbRot:
FPhase := apGruen;
apGruen:
FPhase := apGelb;
apGelb:
FPhase := apRot;
end;
if Assigned(FOnNextPhase) then
FOnNextPhase(self, FPhase);
end;
Nun musst Du "nur noch" eine Instanz dieser Klasse erzeugen, dem Event eine kompatible Methode zuweisen und in einem Timer NextPhase aufrufen.