Einzelnen Beitrag anzeigen

Jürgen Thomas

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

Re: Timerabruf (Timer2) bei Timerablauf (Timer1)

  Alt 19. Mai 2007, 17:22
Aaaahhh! Du willst keinen zweiten Timer aktivieren, sondern einen Timer ein weiteres Mal (ggf. mit anderen Werten) aufrufen. Dann hast Du zwei Sachen nicht verstanden, wie ein Timer arbeitet:
  • Der Timer wird nicht "immer wieder" aufgerufen, bis er abgelaufen ist, sondern einmal (bzw. jedes Mal), wenn seine Gültigkeit endet.
  • Solange Timer.Enabled = true gilt, wird er erneut aktiviert.
  • Das Interval gibt an, nach welcher Zeit er abgelaufen ist.
  • Mögliche Maßnahmen (bei Dir das Umschalten) werden genau zu diesem Zeitpunkt ausgeführt.
Deine if-Abfrage wäre also nur dann wahr, wenn das Interval auf 0/1 gesetzt würde.

Du musst also nach folgendem Schema vorgehen:
Delphi-Quellcode:
private NextTabTimer: TTimer;
// Startwert auf 5 Sekunden einstellen
NextTabTimer.Interval := 5000;
// Timer aktivieren, nachdem z.B. Daten eingelesen wurden
NextTabTimer.Enabled := true;
Anzeige.TabIndex := 0;
// umschalten nach 5 Sekunden
// weitere Seiten werden 10 Sekunden angezeigt
procedure MyForm.NextTabTimerOnTimer(Sender: TObject);
begin
  NextTabTimer.Interval := 10000;
  // nach der letzten Tab-Seite deaktivieren, sonst weiterschalten
  if Anzeige.TabIndex = 4
  then NextTabTimer.Enabled := false
  else Anzeige.TabIndex := Anzeige.TabIndex + 1;
end;
Viel Erfolg! 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