Timer pausieren
-
hi,
ich hab' schon mal im Forum gesucht und bei google und bei msdn, aber habe keine passenden ergebnisse gefunden.
so stelle ich nun hier meine frage:
gibt es eine möglichkeit einen timer zu pausieren und ihn dann wieder zu starten (aber nicht vin vorne, sondern von der zeit, wo er angehalten hat).
oder kann ich auslesen, bei welcher zeit der timer gerade ist, um so das interval später darauf anzupassen.lg,
drummi
-
Kenn mich nicht mit VCL aus. Aber wäre ganz leicht, wenn du GetTickCount() benutzen würdest, könnte so aussehen:
void onTimerTick(..) { importantTimer->Interval = importantInterval; int startImportantTime = GetTickCount(); // shitload of code int endImportantTime = GetTickCount(); importantInterval = startImportantTime - endImportantTime; }
Musst halt noch 'n check hinzufügen, ob der timer grad nicht läuft, etc.
-
ja danke.
-
Wenn man von Timer in Zusammenhang mit der VCL spricht, meint man ja meistens die TTimer-Komponente. Dieser Timer hat keine spezielle Startzeit. Der wird gestartet und dann ruft er bei jedem Tick das Event auf...
bool TimerPaused = false; void OnTimerEvent(...) { if ( !TimerPaused ) { TimerCounter++; // hier muss das hin was du tun willst, wenn der Timer läuft // ... } }
Die Variante lässt den Timer weiterlaufen, aber tut dann halt nix. Die Zeit wird in Form von "TimerCounter" nur dann weitergezählt, wenn
TimerPaused == false.Ist eine schönere Lösung, als die TickCount-Geschichte.. finde ich zumindest.