Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Umgang mit der Timer Komponente (https://www.delphipraxis.net/98673-umgang-mit-der-timer-komponente.html)

MarquiseDeSade 30. Aug 2007 18:19


Umgang mit der Timer Komponente
 
Hallo Delphi-Freunde :-D

Ich habe ein Problem mit der Komponente "Timer" und deren Benutzung. Ich möchte eine Ampel programmieren und bin mir über die Funktionsweise des Timers nicht ganz klar.

Beispiel:

Kann der Timer so benutzt werden ?

Delphi-Quellcode:
procedure TForm1.GruenGelbRotPhase;
begin
  //Grün-Gelb-Rot-Phase
    Image1.Canvas.Brush.Color := clgreen;
      Image1.Canvas.Ellipse(20, 152, 75, 207);
        Timer1.Interval:=2000;
          Image1.Canvas.Brush.Color := clyellow;
            Image1.Canvas.Ellipse(20, 82, 75, 137);
              Timer1.Interval:=2000;
                Image1.Canvas.Brush.Color := clred;
                  Image1.Canvas.Ellipse(20, 12, 75, 67);
end;
Oder funktioniert der Timer nur, wenn er auch in der Prozedur
Delphi-Quellcode:
TForm1.Timer1Timer(Sender: TObject);
eingebunden ist ??

Denn ich wollte das so realisieren, aber die Ampel zeigt nur die Rotphase an...

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var i:integer;
begin
i:=1;
    case i of
    1: begin
          AmpelZeichnen;
            RotPhase;
              inc(i);
        end;
    2: begin
          Timer1.Interval:=2500;
            RotGelbPhase;
              inc(i);
        end;
    3: begin
          Timer1.Interval:=4000;
            GruenPhase;
              inc(i);
        end;
    4: begin
          GruenGelbRotPhase;
            i:=1;
        end;
    end;
end;
Funktioniert das überhaupt so ?? Oder mache ich einen Grundlegenden Fehler, denn wie gesagt, es werden die anderen Ampelphasen nicht angezeigt.

Gruß Tobias :hi:

calculon 30. Aug 2007 18:25

Re: Umgang mit der Timer Komponente
 
Hi!

Du machst einen grundlegenden Fehler...

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var i:integer;
begin
i:=1; // <-- ...und zwar hier
In jedem Timerintervall wird i auf 1 gesetzt und die späteren incs können daran nichts ändern.

Gruß

Calculon
--

MarquiseDeSade 30. Aug 2007 18:28

Re: Umgang mit der Timer Komponente
 
Huhu :hi:

Stimmt :wall:

Nun hab ich es geändert und alles scheint zu funktionieren... muss noch ein bissl testen :zwinker:

Danke schön...

jmd anders 30. Aug 2007 19:52

Re: Umgang mit der Timer Komponente
 
und du solltest am besten i als globale oder wenigstens klassenvarible deklarieren, sonst wird i bei jedem timer aufruf undefiniert sein

dominikkv 30. Aug 2007 20:10

Re: Umgang mit der Timer Komponente
 
Zitat:

Zitat von jmd anders
und du solltest am besten i als globale oder wenigstens klassenvarible deklarieren, sonst wird i bei jedem timer aufruf undefiniert sein

du weißt garnicht was er vor hat ^^
i ist eine lokale variable die in der funktion deklariert wird... vllt braucht er sie ja nur da.
ansonsten umbenennen und als feld in der klasse deklarieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:30 Uhr.

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