Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Timer


theSonGoku - So 19.07.09 19:33
Titel: Timer
Hallo,

ich habe folgendes Problem.
Ich habe in meiner Button Prozedur die Anweisung:

Delphi-Quelltext
1:
Timer1.Enabled := True;                    

So: In der Timer Prozedure steht nun:

Delphi-Quelltext
1:
Label6.Caption := 'Zeit: ' + IntToStr(Timer1.Interval) + ' Sekunden'                    

Der Interval steht bei 25000. Ist erstmal nur testweise.
Das eigendliche Problem ist, dass es nicht funktioniert. Alles was in der Timerprozedure steht passiert nicht.

Ja, der Timer steht anfangs auf False.

Bitte helft mir. :)

mfG
theSonGoku


Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Mo 20.07.2009 um 09:34
Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Moderiert von user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.


Delete - So 19.07.09 19:41

Hast Du auch 25 Sekunden gewartet?


theSonGoku - So 19.07.09 19:43

In meinem Programm ist das ja so, dass wenn ich auf den Button klicke nen paar Sachen passieren und halt der Button unsichtbar wird. Und da wo der Button war ist halt dann Label6. Und dann sollte das da ja runtergezählt werden, was aber nicht passiert.


Delete - So 19.07.09 19:45

Wenn Du den Button klickst, wird der Timer aktiviert. Da dessen Intervall nach Deinen Angaben auf 25.000 steht, feuert er nach 25 Sekunden, daher meine Frage von vorhin.


theSonGoku - So 19.07.09 19:48

Nein habe ich nicht.^^
Denn er soll ja bis 0 runterzählen. Also 25 Sekunden runterzählen.


Delete - So 19.07.09 19:53

Dann setz das Intervall auf 1000 und lasse eine Variable herunterzählen.


theSonGoku - So 19.07.09 19:55

Und wie zähle ich dann die Variable herunter?


Delete - So 19.07.09 19:56

1 abziehen, wie denn sonst?


theSonGoku - So 19.07.09 19:57

Ja aber ich kann ja schlecht so schreiben:

ABC := 5;
ABC := ABC -1;


Delete - So 19.07.09 20:10


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
type
  TDeinForm = class(TForm)
  ...
  private
    FZaehler: integer;
  end;
...

procedure TDeinForm.FormCreate(Sender: TObject);
begin
  FZaehler := 25;
end;

procedure TDeinForm.DeinTimerTimer(Sender: TObject);
begin
  FZaehler := FZaehler - 1//oder einfach dec(FZaehler)
  //weiterer Code
end;


Regan - So 19.07.09 21:58

Warum eine Variable einführen? Man kann auch Timer1.Tag nehmen. Ist ja auch Integer.


Delete - So 19.07.09 22:12

Und das soll man nach 3 Monaten noch begreifen? Einsparung von Variablen auf Kosten der Verständlichkeit ist in meinen Augen keine Option.


jaenicke - Mo 20.07.09 06:26

Dafür gibt es normalerweise Headerkommentare in der Unit. Dort steht bei mir (wenn ich sie verwende) die Verwendung der Tag Eigenschaften als Tabelle drin, genau wie alles andere, was jemand, der den Code nicht kennt, nicht sofort durchschauen würde.

Solange man das ordentlich dokumentiert ist das durchaus legitim. Hier würde ich es aber in der Tat nicht machen, da es eigentlich nichts mit dem Timer zu tun hat. Der zählt ja nur. Ich benutze Tag nur dann, wenn der Wert auch einen direkten Bezug zur Komponente hat. Zum Beispiel bei einer ListView die gerade sortierte Spalte usw.