Einzelnen Beitrag anzeigen

Robert Marquardt
(Gast)

n/a Beiträge
 
#3

Re: Ampelschaltung mit Case Anweisungen.

  Alt 28. Jan 2007, 14:29
Ich wuerde erst mal den Ansatz ueberarbeiten. Eine Ampel ist ein Zustandsautomat.
Delphi-Quellcode:
type
  TAmpelZustaende =
    (azRot, azRotGelb, azGruen, azGelb);
Durch diese Zustaende rotiert die Ampel einfach.
Delphi-Quellcode:
procedure TForm1.TAmpelTimer(Sender: TObject);
begin
  // den Zustand fortschalten
  if AmpelZustand = azGelb then
    AmpelZustand := azRot
  else
    Inc(AmpelZustand);
Jetzt kann man vom Zustand die Darstellung ableiten.
Delphi-Quellcode:
  // den neuen Zustand darstellen
  case AmpelZustand of
    azRot:
      begin
        IRot.Visible := True;
        IGelb.Visible := False;
        IGruen.Visible := False;
      end;
    azRotGelb:
      begin
        IRot.Visible := True;
        IGelb.Visible := True;
        IGruen.Visible := False;
      end;
    azGruen:
      begin
        IRot.Visible := False;
        IGelb.Visible := False;
        IGruen.Visible := True;
      end;
    azGelb:
      begin
        IRot.Visible := False;
        IGelb.Visible := True;
        IGruen.Visible := False;
      end;
  end;
Das wichtigste dabei ist das immer die Darstellung dem Zustand des Programmes nachgeordnet ist. Das gilt fuer jedes vernuenftige Programm.
  Mit Zitat antworten Zitat