Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Schleifenproblem mit Timer (https://www.delphipraxis.net/81275-schleifenproblem-mit-timer.html)

Mucki 23. Nov 2006 20:43


Schleifenproblem mit Timer
 
Guten Abend, :)
ich möchte folgendes (im übertragenem Sinne) schreiben,
Button1 zeigt ein Laben1 an, nach einer Zeit t,
soll dieses Label1 sich ändern.
Soweit so gut...

Dieser Vorgang soll in einer for-Scleife gepackt werden
und 10 mal wiederholt werden.
Aber leider bleibt das Programm bei

procedure TForm1.Timer1Timer(Sender: TObject)

hängen und meldet: Anweisung erwartet aber procedure gefunden.

Kann mir jemand meinen Fehler nennen ? :gruebel:

Gruß Mucki :)

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Timer1: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
 
implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
begin                            
   for i :=1 to 10 do
     begin
        label1.caption := 'jetzt gehts los...';
        timer1.enabled := true;
     

           procedure TForm1.Timer1Timer(Sender: TObject);
           begin
             Label1.caption := '...na also';
             timer1.enabled := false;
           end;
     end;
end;

end.

mkinzler 23. Nov 2006 20:55

Re: Schleifenproblem mit Timer
 
.Timer1Timer muß außerhalb von .Button1Click implemnetiert werden

Mucki 23. Nov 2006 21:10

Re: Schleifenproblem mit Timer
 
Ich möchte, dass sich
Label1 := jetzt gehts los
dann eine Pause über die Zeit von timer1
und dann Label1 := na also
10 x abwechselt.

mkinzler 23. Nov 2006 21:13

Re: Schleifenproblem mit Timer
 
Ist schon klar, aber die Methode für den Timerevent muß trotzdem aus der anderen Methode raus.

Die Methode .Timer1Timer wird vom Timer am Ende der angegebenen Zeitperiode aufgerufen.

Mucki 23. Nov 2006 21:22

Re: Schleifenproblem mit Timer
 
Und wie kann ich das zum wiederholen bringen?

thkerkmann 23. Nov 2006 21:24

Re: Schleifenproblem mit Timer
 
Hi,

versuchs mal so:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin                            
   Timer1.enabled := true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
const
   zaehler:integer = 20;
begin
   if odd(zahler) then
      Label1.caption := '...na also'
   else
      Label1.caption := 'jetzt gehts los...';
      
   dec(zaehler);
   if zaehler <= 0 then
      Timer1.enabled := false;
end;
Zur Erläuterung:
der Button startet den Vorgang: Also im Formdesigner muss Timer1.enabled auf false stehen.

Die Timerroutine wird aufgerufen und setzt je nach zaehler den entsprechenden Text.
Wenn der zaehler auf 0 gezaehlt ist stoppt der Timer.

Gruss

Mucki 23. Nov 2006 21:37

Re: Schleifenproblem mit Timer
 
Cool, danke. :hello:


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:23 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