![]() |
Re: Kreuzung - Timer funktioniert nicht
Ja das ist verständlich. Nur hab ich noch nie was mit "case" und anderen Dingen gemacht. Aber danke trotzdem!
|
Re: Kreuzung - Timer funktioniert nicht
Folgendes Problem:
Die Ampel schalltet nicht wie sie soll sondern so: Rot, Gelb, Gelbrot, Grün Ich finde meinen Fehler nicht, bitte helft mir:
Delphi-Quellcode:
Ich habe NUR noch das Problem mit der Reihenfolge und ignoriere eure Tipps auch NICHT.if ImAmpel1Ro.Visible = True then begin ImAmpel1Ro.Visible:= False; ImAmpel1Gero.Visible:= True; end else if ImAmpel1Gero.Visible = True then begin ImAmpel1Gero.Visible:= False; ImAmpel1Gr.Visible:= True; end else if ImAmpel1Gr.Visible = True then begin ImAmpel1Gr.Visible:= False; ImAmpel1Ge.Visible:= True; end else if ImAmpel1Ge.Visible = True then begin ImAmpel1Ge.Visible:= False; ImAmpel1Ro.Visible:= True; end; |
Re: Kreuzung - Timer funktioniert nicht
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
vielleicht auch so (siehe Anhang, *.exe und Quelldateien) ?
Delphi-Quellcode:
... ist mit Sicherheit noch optimierungsfähig (nur 'mal so eben schnell "zusammengeschustert")
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Timer1: TTimer; Prot: TPanel; Pgelb: TPanel; Pgruen: TPanel; Edit1: TEdit; Prot2: TPanel; Pgelb2: TPanel; Pgruen2: TPanel; Label1: TLabel; Label2: TLabel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure ShowAmpel(Sender: TObject); private { Private declarations } phase, phase2 : Integer; counter : Integer; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin counter := 0; phase := 0; Prot.Visible := False; Pgelb.Visible := False; Pgruen.Visible := False; Prot2.Visible := False; Pgelb2.Visible := False; Pgruen2.Visible := False; Edit1.Text := ''; Timer1.Enabled := True; end; procedure TForm1.Button2Click(Sender: TObject); begin Timer1.Enabled := False; Edit1.Text := ''; Prot.Visible := False; Pgelb.Visible := False; Pgruen.Visible := False; Prot2.Visible := False; Pgelb2.Visible := False; Pgruen2.Visible := False; end; procedure TForm1.Timer1Timer(Sender: TObject); begin counter := counter + 1; //Sekunden case counter of 0..5 : phase := 1; // Rot 6..10 : phase := 2; // Rot-Gelb 11..15 : phase := 3; // Gruen 16..20 : phase := 4; // Gruen 21..25 : phase := 5; // Gelb 26..29 : phase := 6; // Rot 30 : begin phase := 6; counter := 0; end; end; // end case of if (phase + 3) > 6 then phase2 := phase -3 else phase2 := phase +3; Edit1.Text := 'Phase : '+IntToStr(phase); ShowAmpel(Self); end; procedure TForm1.ShowAmpel(Sender: TObject); begin case phase of 1 : begin Prot.Visible := True; end; 2 : begin Prot.Visible := True; Pgelb.Visible := True; end; 3 : begin Prot.Visible := False; Pgelb.Visible := False; Pgruen.Visible := True; end; 4 : begin Prot.Visible := False; Pgelb.Visible := False; Pgruen.Visible := True; end; 5 : begin Pgruen.Visible := False; Pgelb.Visible := True; end; 6 : begin Pgelb.Visible := False; Prot.Visible := True; end; end; // end case of case phase2 of 1 : begin Prot2.Visible := True; end; 2 : begin Prot2.Visible := True; Pgelb2.Visible := True; end; 3 : begin Prot2.Visible := False; Pgelb2.Visible := False; Pgruen2.Visible := True; end; 4 : begin Prot2.Visible := False; Pgelb2.Visible := False; Pgruen2.Visible := True; end; 5 : begin Pgruen2.Visible := False; Pgelb2.Visible := True; end; 6 : begin Pgelb2.Visible := False; Prot2.Visible := True; end; end; // end case of end; end. |
Re: Kreuzung - Timer funktioniert nicht
danke für deine antwort aber ich wüde gerne wissen wieso die ampel in der falschen reihenfolge schaltet... damit ich was lernen und es ändern kann.
mfg ghost |
Re: Kreuzung - Timer funktioniert nicht
Zitat:
Achso: und bitte keinen Vergleich auf true, also bitte das so machen:
Delphi-Quellcode:
if ImAmpel1Ro.Visible{ = True} then begin ImAmpel1Ro.Visible:= False; ImAmpel1Gero.Visible:= True; end else if ImAmpel1Gero.Visible{ = True} then begin ImAmpel1Gero.Visible:= False; ImAmpel1Gr.Visible:= True; end else if ImAmpel1Gr.Visible{ = True} then begin ImAmpel1Gr.Visible:= False; ImAmpel1Ge.Visible:= True; end else if ImAmpel1Ge.Visible{ = True} then begin ImAmpel1Ge.Visible:= False; ImAmpel1Ro.Visible:= True; end; |
Re: Kreuzung - Timer funktioniert nicht
nein soweit ich das sehe habe ich nichts vertauscht
|
Re: Kreuzung - Timer funktioniert nicht
hat sich erledigt habe den fehler jetzt ENDLICH gefunden ;) danke für die hilfe mfg Ghost
|
Re: Kreuzung - Timer funktioniert nicht
Zitat:
Zitat:
|
Re: Kreuzung - Timer funktioniert nicht
Du solltest dir vielleicht nochmal die Delphi-GRUNDlagen ansehen, bevor du loslegst.
Wir sehen ja,. dass du keine Tipps annimst und selbst nach dem X-Ten Mal noch auf True/False vergleichst! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz