Per Button Timer reseten

Für Fragen rund um die Ide und zum Debugger
Antworten
PatSpi
Beiträge: 1
Registriert: Sa 14. Sep 2013, 21:13

Per Button Timer reseten

Beitrag von PatSpi »

Hallo, wie kann ich per button den timer so einstellen, dass er wieder von 1000 runterzählt. Ich bin dabei am Fangmich spiel rumzubasteln und der Button springt über den Timer wirrlos irgendwo hin, ganz automatisch. Wenn ich auf den Button klicke, soll er auch zufällig irgendwo hinspringen, tut er auch. Aber der Timer zählt weiter und so springt er doppelt und das sieht nicht gut aus. Mit welchem befehl kann ich den Timer erneut zählen lassen?

Mfg patrick

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Per Button Timer reseten

Beitrag von Michl »

Hallo Patrick,

erstmal herzlich willkommen hier im Forum!

Ich nehme an, du nutzt einen Timer von Typ TTimer, dem du einen Intervall von 1000 (1 Sekunde) gegeben hast. Mit "Timer.Enabled:=True" kann man den Timer starten und mit "Timer.Enabled:=False" diesen wieder anhalten. Wenn du den Timer startest, wird nun jede Sekunde ein Ereignis (Timer.OnTimer) aufgerufen, bis man den Timer wieder stoppt.

Falls ich dich jetzt richtig verstanden habe kannst du das wie folgt machen:

- bei Buttonklick Timer starten
- bei Ereignis Timer.OnTimer den Timer stoppen und dann eigene Befehle ausführen

- beim nächsten Buttonklick Timer starten
- bei Ereignis Timer.OnTimer den Timer stoppen und dann eigene Befehle ausführen
...

Siehe:
http://lazarus-ccr.sourceforge.net/docs/lcl/extctrls/ttimer.html


[Edit] Ich habe mir eben nochmal deine Frage durchgelesen und bin nicht ganz sicher, ob du das evtl. anders meinst?!

Falls du einen Timer hast und du in bei jedem Timeraufruf ein Objekt woanders zeichnen lässt und du nur wissen willst, wie man den Timer stoppt (nach dem 1000. Timer.Ontimer Aufruf), so kannst du dafür eine globale Variable dafür nutzen z.B:

Code: Alles auswählen

var
  Durchlauf: Integer;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  Timer1.Enabled:=True;
end;
 
procedure TForm1.Timer1StartTimer(Sender: TObject);
begin
  Durchlauf:=1000;
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Dec(Durchlauf);
  if Durchlauf=0 then Timer1.Enabled:=False;
 
  //hier jetzt dein Code
end;

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

Antworten