![]() |
Counter mit Timer und Label
Hiho
wie kann ich ein Label beispielsweiße von 10 ... 0 zählen lassen ?!? Dies ist ja eigentlich kein Probelem. Doch mein Code ist dazu recht lange! Ich weiss aber, dass man dieses simple Problem auch mit nur 2-3 Zeilen Code lösen kann. Könnt ihr mir diesen Code mal posten ?!? danke Trouble_Maker |
Hallo,
Delphi-Quellcode:
Das müsstest Du ncoh mit einem Timer noch Verbinden sonst sieht man da nciht viel. Oder vor/nach der Label-Zeile noch ein Sleep/Delay mit reinnehmen.
for i := 10 downto 0 do
begin Label1.Caption := IntToStr(i); end; Grüsse, Daniel :hi: |
Wie soll man das mit einen Timer in Verbindung bringen? Wenn du den Code in einem OnTimer Ereignis aufrufst, zählt er jedes mal auf null runter.
Wenn schon dann so:
Delphi-Quellcode:
type
TForm1 = class(TForm) Timer1: TTimer; Label1: TLabel; procedure Timer1Timer(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } FCounter: Integer; public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Timer1Timer(Sender: TObject); begin if FCounter = 0 then Timer1.Enabled := FALSE; Label1.Caption := IntToStr(FCounter); Dec(FCounter); end; procedure TForm1.FormCreate(Sender: TObject); begin FCounter := 10; end; |
Zitat:
Grüsse, Daniel :hi: |
hiho
@Daniel: ja sowas ähnliches habe ich gesucht, aber irgendwie klappt das nich so, wie ich mir das vorgestellt habe. (Habe erstmal noch i als Integer deklariert, weil es sonst erst garnicht geklappt hätt) Aber er Springt direkt von der 10 auf die 0 !!! Also zählt nicht runter (10,9,8, ... 0 ) wieso ?!? danke Trouble_Maker |
Zitat:
Grüsse, Daniel :hi: |
Weil die Schleife so schnell ist, dass du nichts siehst - ganz einfach.
@Daniel: Könntest du mir mal bitte Code zeigen, wie du dir das mit einen Timer vorstellst? :shock: @Trouble_Maker: Und was ist gegen meine Lösung einzuwenden? Die geht und ist sauber gelöst. Und nicht so ein gebastel mit einer Schleife und einer eingebauten Timer-Verzögerung. Wenn ich so wieso einen Timer brauche, dann brauche ich auch die Schleife nicht. |
Aber wenn du es unbedingt mit einer Schleuife machen willst, dann bitte so, dass die anwendung noch reagiert:
Delphi-Quellcode:
procedure delay(msec:longint);
var start,stop:longint; begin start := gettickcount; repeat stop := gettickcount; application.processmessages; until (stop - start ) >= msec; end; procedure TForm1.Button1OnClick(Sender: TObject); var i : Integer; begin for i := 10 downto 0 do begin Label1.Caption := IntToStr(i); Delay(1000); end; end; |
heyho ...
@Luckie: Danke deine Lösung funktioniert perfekt !!! danke für eure Mühe cu Trouble_Maker |
Delphi-Quellcode:
Wäre auch eine (nicht ganz so elegante) Möglichkeit. Dann muss man nur noch überprüfen ob i nicht 0 ist und fertig.
var
Form1: TForm1; i: Integer; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin Timer1.Enabled := true; end; procedure TForm1.FormCreate(Sender: TObject); begin i := 10; end; procedure TForm1.Timer1Timer(Sender: TObject); //Timer Intervall 1000ms begin i := i -1; Label1.Caption := IntToStr(i); end; end. MfG Florian :hi: |
@flomei: Sag mal was soll denn das jetzt? Kuck mal in mein erstes Posting (die Lösung mit dem Timer). Warum bringst du noch mal das gleiche nur schlechter und unvollständig?
|
Zitat:
Zitat:
Also: Keep cool 8)! Ich hab keine Lust mich mit dir deshalb zu streiten... :cheers: MfG Florian :hi: |
Er ist aus zwei Gründen, meiner Meinung nach, schlechter:
Erstmal hast du eine globale Variabel i (allein der Name ist schlecht, da man die meisten Zählvariablen mit i benennt.). Meine Variable FCount hingegen ist ein Feld der Klasse TForm1, und somit OOP gerecht. Zweitens:
Delphi-Quellcode:
Steht
i := i-1;
Delphi-Quellcode:
gegenüber. Ab D5 erzeugt der Compiler zwar identischen Assembler Code, nur halte ich meine Schreibweise für einfacher lesbar.
Dec(i);
Und gerade wenn es ein Anfänger ist sollte man ihm nicht eine schlechtere aber einfach verstehbare Lösung geben, sondern eine richtige und OOP gerechte. Sonst lehrnt er es nie bzw. gewöhnt sich einen schlechten Stil an, weil er es nicht besser weiß bzw. gelernt hat. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:27 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