AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Counter mit Timer und Label

Ein Thema von Trouble_Maker · begonnen am 22. Jun 2003 · letzter Beitrag vom 22. Jun 2003
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Trouble_Maker
Trouble_Maker

Registriert seit: 30. Jan 2003
244 Beiträge
 
Delphi 6 Personal
 
#1

Counter mit Timer und Label

  Alt 22. Jun 2003, 15:49
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
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#2
  Alt 22. Jun 2003, 15:53
Hallo,
Delphi-Quellcode:
for i := 10 downto 0 do
begin
  Label1.Caption := IntToStr(i);
end;
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.
Grüsse, Daniel
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3
  Alt 22. Jun 2003, 16:00
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;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#4
  Alt 22. Jun 2003, 16:01
Zitat von Luckie:
Wie soll man das mit einen Timer in Verbindung bringen?
Weil die Schelfie sonst zu schnell ist und man das runterzählen gar nciht sehen würde.

Grüsse, Daniel
  Mit Zitat antworten Zitat
Benutzerbild von Trouble_Maker
Trouble_Maker

Registriert seit: 30. Jan 2003
244 Beiträge
 
Delphi 6 Personal
 
#5
  Alt 22. Jun 2003, 16:02
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
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#6
  Alt 22. Jun 2003, 16:04
Zitat von Trouble_Maker:
Aber er Springt direkt von der 10 auf die 0 !!! Also zählt nicht runter (10,9,8, ... 0 )
Das ist nicht ganz richtig, siehe mein letztes Posting. Die Schleife ist so schnell, das Du nur noch gleich die 0 angezeigst bekommst. Die Schleife an sich zählt schon richtig runter und zeigst es auch richtig an. Daher habe ich noch gesagt das ganze mithilfe eines Timers oder Sleep oder Delay verzögern, um auch wirklich jede Zahl an sich runterzählen sieht.

Grüsse, Daniel
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7
  Alt 22. Jun 2003, 16:06
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?

@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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8
  Alt 22. Jun 2003, 16:11
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;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Trouble_Maker
Trouble_Maker

Registriert seit: 30. Jan 2003
244 Beiträge
 
Delphi 6 Personal
 
#9
  Alt 22. Jun 2003, 16:13
heyho ...

@Luckie: Danke deine Lösung funktioniert perfekt !!!


danke für eure Mühe


cu Trouble_Maker
  Mit Zitat antworten Zitat
Benutzerbild von flomei
flomei

Registriert seit: 17. Jan 2003
Ort: Schieder-Schwalenberg
2.094 Beiträge
 
Delphi 2005 Personal
 
#10
  Alt 22. Jun 2003, 16:17
Delphi-Quellcode:
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.
Wäre auch eine (nicht ganz so elegante) Möglichkeit. Dann muss man nur noch überprüfen ob i nicht 0 ist und fertig.

MfG Florian
Florian Meier
... ist raus.
Vielen Dank für die Zeit mit euch!
http://www.flomei.de -- http://www.md5hash.de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:09 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