![]() |
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. |
Re: Schleifenproblem mit Timer
.Timer1Timer muß außerhalb von .Button1Click implemnetiert werden
|
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. |
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. |
Re: Schleifenproblem mit Timer
Und wie kann ich das zum wiederholen bringen?
|
Re: Schleifenproblem mit Timer
Hi,
versuchs mal so:
Delphi-Quellcode:
Zur Erläuterung:
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; 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 |
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