Autor Beitrag
patrick dee
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 311

Win 98SE, WinXP
D3,D6
BeitragVerfasst: Mi 05.02.03 18:35 
hi,

brauche einen countdown.
Label1 zeigt den inhalt der Label2 an. drücke ich start so soll runter auf 0
gezählt werden.
es geht dabei um minuten und sekunden 55:55
mein code :
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.CountTimerTimer(Sender: TObject);
begin
dec(Tackt);
  Label1.Caption :=intToStr(Tackt);
  if Tackt <=0 then

  begin
    CountTimer.Enabled := false;
     Label1.Caption := '00:00';
  end;
end;


wenn ich so starte passsiert nix und label1 zeigt gleich 00:00 an.
wo ist mein fehler :cry:

patrick

_________________
Glauben heißt nichts wissen ...
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Mi 05.02.03 18:59 
patrick dee hat folgendes geschrieben:
hi,
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.CountTimerTimer(Sender: TObject);
begin
dec(Tackt);
  Label1.Caption :=intToStr(Tackt);
  if Tackt <=0 then

  begin
    CountTimer.Enabled := false;
     Label1.Caption := '00:00';
  end;
end;


Erstmal sollte man das etwas ordentlicher schreiben, da blickt keiner durch, 2. solltest Du einen ordentlichen Titel schreiben, nix mit "Wo ist mein Fehler?" !!!
Was ist denn überhaupt tackt? wo wird diese Variable initialisiert, denn so wie's ausschaut, ist die gleich am Anfang 0 und dann ist klar, dass der if-then-Teil ausgeführt wird, also 00.00 angezeigt wird. Der Fehler ist also nicht in dieser Prozedur, denke ich.... poste mal die Start-Proz für den Timer.

Gruß
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Mi 05.02.03 19:07 
@Patrick: Hier ein Auszug aus den Richtlinien:
Richtlinien hat folgendes geschrieben:
1.1 Beiträge
Bitte formuliere den Betreff Deiner Beiträge so, dass andere Mitglieder anhand dieser bereits das eigentliche Thema festmachen können. Beiträge wie etwa "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" lassen den Leser im Unklaren darüber, was das Thema der Diskussion ist.

Bitte ändere den Titel Deines ersten Beitrags (einfach auf Edit klicken)! Danke!

Gruß
TINO
BungeeBug
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 901



BeitragVerfasst: Mi 05.02.03 19:12 
Hi ... also auch wenn es schon ne Lösung (oder nen Ansatz gibt) ... ich will / wollte auch wieder mal was Proggen ... hier is also meine Lösung .. nicht Meckern wenns nicht DIE Lösung is ... war eben nicht allzuviel Zeit da ... so jetzt aber

ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Timer1: TTimer;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
     minuten , sekunden : integer;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 IF Timer1.Enabled = false THEN
  BEGIN
   minuten := 0;  // <- Zeit in Minuten (Zahl vor dem : )
   sekunden := 10;  // <- Zeit in Sekunden (Zahl nach dem :)
   Timer1.Enabled := true;
  END
 ELSE
  BEGIN
   Timer1.Enabled := false;
  END;
end;

procedure TForm1.Timer1Timer(Sender: TObject);

begin
 sekunden := sekunden -1 ; // Eine Sek. weniger ...
 // Check ob die Sekunden noch über 0 sind
 IF sekunden = 0 THEN
  BEGIN
   minuten := minuten -1;
   sekunden := 59 ;
  END;
 // Zeitformat anpassen
  IF Length(IntToStr(sekunden)) = 1 THEN
   BEGIN
     //Label updaten -> Zeit hat nur eine Stelle
     Label1.Caption := 'Zeit: 0'+ IntToStr(minuten) +':0'+ IntToStr(sekunden);
   END
  ELSE
   BEGIN
    //Label updaten -> Zeit hat mehr eine Stelle
     Label1.Caption := 'Zeit: '+ IntToStr(minuten) +':'+ IntToStr(sekunden);
   END;
end;

end.

Sollte mit nem Label , nem Timer und nem Button funzen ...

MfG BungeeBug