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
Per Button Timer reseten
Re: Per Button Timer reseten
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:
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;