![]() |
Timer VErständnis Frage!
Noch eine dumme Frage!
Ich habe das so verstanden, dass ein Timer einen Befehl nur imer wieder wiederholt. Ich soll aber nun eine Ampel bauen.Also ich habe vier kleine Icons.Einmal nur rot,dann rot und gelb, dann grün und einen nur gelb. diese bilder müssen so hintereinander visible werden dass das auch aussieht wie ne ampel. Das Prog habt ihr ja gesehen.Also den Button um den Timer ein und auszustellen habe ich ja nun.habe zu anfang ampelrot.visible:=true und die anderen bilder obendrüber.der timer wiederholt ja nur eine sache aber wie kann man sachen HINTEREINADNER wiedergeben? Bitte helft mir... dann is das Prog auch fertig! Danke Danke Wargrave |
Re: Timer VErständnis Frage!
Speicher dir doch die Ampelphase und mach in dem OnTimer-Event ne case-Abfrage
|
Re: Timer VErständnis Frage!
Hmm das war mir ne nummer zu schnell als Noob!
Erstens: wo krieg ich ne ampelphase her ? oder meinst du : rot.visible:=true; rotgelb.visible:=false; gruen.visible:=false; gelb.visible:=false; ??? und was is ne case abfrage? Sorry bin noch neu auf dem gebiet! Aber trotzdem danke! |
Re: Timer VErständnis Frage!
Hi Wargrave,
wenn ich mich nicht irre, dann beziehst du dich auf ![]() Du könntest die Tag-Eigenschaft des Timers dazu verwenden: Im OnTimer
Delphi-Quellcode:
Kurze Erklärung: Die Werte hängen vom Timer-Intervall ab. Nehmen wir an, du stellst 1000 (entspricht ca. 1 Sekunde) als Intervall ein, dann ist die Ampel 5 Sekunden lang auf Rot, 5 Sekunden lang auf Grün, 2 Sekunden auf Orange und dann beginnt das Spiel von neuem.
Timer1.Tag := Timer1.Tag + 1;
case Timer1.Tag of 5: //schalte auf grün 10: //schalte auf orange 12: begin //schalte auf rot Timer1.Tag := 0; //zurücksetzen, der Spaß beginnnt von neuem. end; end; Greetz alcaeus |
Re: Timer VErständnis Frage!
War der Quelltext gerade nicht noch anders?
Ohne case? Naja mal schaun! |
Re: Timer VErständnis Frage!
Zitat:
Greetz alcaeus |
Re: Timer VErständnis Frage!
Ich würde aber gerne nochmal den ausführlichen sehen. Ohne "case" Befehl.
Es hat wunderbar funktioniert aber was habe ich jetzut falsch gemacht?: -------------------------------------------------------------------------
Delphi-Quellcode:
--------------------------------
procedure TForm1.startClick(Sender: TObject);
begin if (start.Caption = 'Ampel starten!') //Wenn Caption=Ampel starten! then begin start.Caption := 'Ampel stoppen!'; //Dann Caption:=Ampel stoppen! zeit.Enabled := true; //Dann Timer aktivieren end else begin start.Caption := 'Ampel starten!'; //Sonst Caption:=Ampel starten! zeit.Enabled := false; //Sonst Timer deaktivieren end; end; procedure TForm1.zeitTimer(Sender: TObject); begin if (zeit.Tag= 3) then rotgelb.visible:=true; if (zeit.Tag= 4) then gruen.visible:=true; if (zeit.Tag= 7) then gelb.visible:=true; if (zeit.Tag=8 ) then rot.visible:=true; if (zeit.Tag=8 ) then zeit.Tag:=0; end; end. zeit recht häufig an undefiniertes Objeakt als der markiert dann den timer. is aber quatsch! Bitte nochmal um hilfe. MFG Wargrave [edit=Admin]Quellcode in Delphi-Tags gesetzt. Künftig bitte selber machen. Danke ;-) Mfg, Daniel[/edit] |
Re: Timer VErständnis Frage!
Zitat:
Und du solltest die [ delphi]-Tags (ohne Leerzeichen) verwenden um den Code formatiert anzeigen zu lassen. So wie jetzt liest er sich sehr schlecht. |
Re: Timer VErständnis Frage!
Hi Wargrave,
Zitat:
Zitat:
Greetz alcaeus |
Re: Timer VErständnis Frage!
Em also das alles ist ja sehr plausibel.
Aber es soll auch möglich sein (also komplizierter) diese Ampel nur mit IF-THEN-ELSE schleifen und timern zu schalten ohne dabei den befehl Timer1.Tag auszunutzen. weiß einer wie? |
Re: Timer VErständnis Frage!
Hi Wargrave,
Zitat:
Du könntest aber auch 3 Timer mit Intervall 12000 verwenden, und jeweils einen für rot, gelb und grün verwenden. Dabei musst du diese nur zeitversetzt aktivieren. Inwieweit das aber sinnvoll ist wage ich zu bezweifeln. Ob du nun eine case-Abfrage oder eine if-then-else-Abfrage (nicht schleife :zwinker:) verwendest, ist egal, es ist Gewohnheitssache. Greetz alcaeus |
Re: Timer VErständnis Frage!
Danke danke!
Damit ihr was zu tun habt habe ich auch schon wieder die nächste Frage. Ich will das ein Icon eine stelle weiterrutscht wenn ich eine Taste auf der Tastatur drücke. also: if( ???? key 'm' pressed) then icon.Left:=icon.Left+10; oder wie is da der befehl? Danke danke der Wargrave |
Re: Timer VErständnis Frage!
Hi Wargrave,
es wurde dir soviel ich weiß schon mal gesagt: neue Frage, neuer Thread. Sonst wird das ein riesiges durcheinander. Greetz alcaeus |
Re: Timer VErständnis Frage!
Form.KeyPreview auf True setzen und dann im OnKeyDown-Event
Delphi-Quellcode:
P.S.: Neue Frage = neuer Thread
case Key of
VK_RIGHT: {...} end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18: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-2025 by Thomas Breitkreuz