Zitat von
Jelly:
Du hast den Fehler im Timer. Wenn du die Ampel von "Aus" auf "grün" stellst (deine erste if-Bedingung), vergisst du dein IAmpelAus.visible auf false zu setzen. Folglich ist beim 2. Timerdurchlauf deine erste Bedingung immer noch erfüllt, und es wird nie ein else-Zweig abgehandelt.
Also ich habe jetzt "IAmpelaus.Visible := false;" eingegeben... hattest recht, das hatte ich noch vergessen... jetzt ist es aber trotzdem so, dass sich nichts tut, wenn ich auf Start klicke...??
Hier noch mal der aktuelle Quelltext:
Delphi-Quellcode:
procedure TProjekt_Ampelsimulation_Form1.Timer1Timer(Sender: TObject);
begin
if IAmpelaus.Visible then
begin
IAmpelaus.Visible := false;
IAmpelgruen.Visible := true;
IAmpelrot.Visible := false;
IAmpelgelb.Visible := false;
IAmpelrotgelb.Visible := false;
Timer1.Interval := 4000;
end
else if IAmpelgruen.Visible then
begin
IAmpelaus.Visible := false;
IAmpelgruen.Visible := false;
IAmpelrot.Visible := false;
IAmpelrotgelb.Visible :=false;
IAmpelgelb.Visible := true;
Timer1.Interval := 1000;
end
else if IAmpelgelb.Visible then
begin
IAmpelgelb.Visible := false;
IAmpelgruen.Visible := false;
IAmpelaus.Visible := false;
IAmpelrotgelb.Visible := false;
IAmpelrot.Visible := true;
Timer1.Interval := 4000;
end
else if IAmpelrot.Visible then
begin
IAmpelrot.Visible := false;
IAmpelaus.Visible := false;
IAmpelgruen.Visible := false;
IAmpelgelb.Visible := false;
IAmpelrotgelb.Visible := true;
Timer1.Interval := 1000;
end
else if IAmpelrotgelb.Visible then
begin
IAmpelaus.Visible := false;
IAmpelrot.Visible := false;
IAmpelrotgelb.Visible := false;
IAmpelgruen.Visible := false;
IAmpelgelb.Visible := true;
Timer1.Interval := 1000;
end
else if IAmpelgelb.Visible then
begin
IAmpelaus.Visible := false;
IAmpelgelb.Visible := false;
IAmpelrot.Visible := false;
IAmpelrotgelb.Visible := false;
IAmpelgruen.Visible := true;
Timer1.Interval := 4000;
end
end;
Wíe gesagt, bei mir gehts immer noch nicht...
Zitat:
Ich würde versuchen, das Ganze etwas übersichtlicher zu gestalten, und dir eine TAmpel Klasse zu bilden. Denn spätestens wenn du deine Kreuzung mit mehreren Ampeln abbilden willst, wird deine if-Abfragerei ziemlich unübersichtlich. Wie die TAmpel Klasse aussehen könnte, wäre noch zu überlegen.
Tut mir leid, aber das habe ich gar nicht verstanden...
Was ist denn ein TAmpel? sry, aber das habe ich noch nie gehört...