Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Timer VErständnis Frage! (https://www.delphipraxis.net/31337-timer-verstaendnis-frage.html)

Wargrave 7. Okt 2004 15:24


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

Stevie 7. Okt 2004 15:29

Re: Timer VErständnis Frage!
 
Speicher dir doch die Ampelphase und mach in dem OnTimer-Event ne case-Abfrage

Wargrave 7. Okt 2004 15:37

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!

alcaeus 7. Okt 2004 15:39

Re: Timer VErständnis Frage!
 
Hi Wargrave,

wenn ich mich nicht irre, dann beziehst du dich auf diese Frage.
Du könntest die Tag-Eigenschaft des Timers dazu verwenden:
Im OnTimer
Delphi-Quellcode:
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;
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.

Greetz
alcaeus

Wargrave 7. Okt 2004 15:43

Re: Timer VErständnis Frage!
 
War der Quelltext gerade nicht noch anders?
Ohne case?
Naja mal schaun!

alcaeus 7. Okt 2004 15:55

Re: Timer VErständnis Frage!
 
Zitat:

Zitat von Wargrave
War der Quelltext gerade nicht noch anders?
Ohne case?

Ja, war er. Da ich dieses Thema aber erst nach dem Posten der Lösung im anderen Thema gesehen habe, hab ich schnell noch case eingefügt und die Antwort hierher verschoben, da sie hier besser herpasst.

Greetz
alcaeus

Wargrave 7. Okt 2004 19:06

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]

dizzy 7. Okt 2004 19:49

Re: Timer VErständnis Frage!
 
Zitat:

Zitat von Wargrave
zeit recht häufig an undefiniertes Objeakt als der markiert dann den timer. is aber quatsch!

Tatsache - dieser Satz ist wirklich Quatsch :roll:.

Und du solltest die [ delphi]-Tags (ohne Leerzeichen) verwenden um den Code formatiert anzeigen zu lassen. So wie jetzt liest er sich sehr schlecht.

alcaeus 7. Okt 2004 19:58

Re: Timer VErständnis Frage!
 
Hi Wargrave,

Zitat:

Zitat von Wargrave
Ich würde aber gerne nochmal den ausführlichen sehen. Ohne "case" Befehl.

Den hast du grad selbst geschrieben :zwinker:

Zitat:

Zitat von Wargrave
zeit recht häufig an undefiniertes Objeakt als der markiert dann den timer. is aber quatsch!

Ich schätze mal du hast den Timer auf dem Form? und ich schätze auch dass der Timer zeit heißt? Wenn ja, dann ist es quatsch. Wenn nein, dann bessere die Fehler aus. Ich sehe keine anderen Fehler.

Greetz
alcaeus

Wargrave 8. Okt 2004 15:00

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?


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:54 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz