Einzelnen Beitrag anzeigen

Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#6

Re: Timerabruf (Timer2) bei Timerablauf (Timer1)

  Alt 19. Mai 2007, 17:47
Also doch, wie ich es schon in meiner ersten Antwort gesagt habe: die beiden Timer aktivieren und deaktivieren sich gegenseitig.
Delphi-Quellcode:
// vereinfacht: die Intervalle bleiben konstant
TimerReload.Interval = 30000;
TimerNextTab.Interval = 10000;

// Anzeige weiterschalten:
procedure MyForm.TimerNextTabOnTimer(Sender: TObject);
begin
  if Anzeige.TabIndex = 2
  then begin
    Anzeige.TabIndex := 0;
    // das Weiterschalten deaktivieren, damit erst einmal eingelesen werden kann
    TimerNextTab.Enabled := false;
  end
  else begin
    Anzeige.TabIndex := Anzeige.TabIndex + 1;
  end;
end;

// Daten neu einlesen
procedure MyForm.TimerReloadOnTimer(Sender: TObject);
begin
  if Anzeige.TabIndex = 0
  then begin
    DatenNeuEinlesen();
    // das Weiterschalten aktivieren
    TimerNextTab.Enabled := true;
  end;
end;
Das Zusammenspiel könnte in der Praxis vereinfacht werden. Eigentlich brauchst Du den TimerReload überhaupt nicht, sondern liest die Daten einfach dann ein, wenn er wieder auf TabIndex 0 umgeschaltet hat. Aber das ist ein anderes Thema.

Gruß Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat