Hallo Svenkan,
mir sind jetzt noch ein paar Gedanken gekommen; die möchte ich mit meinen früheren Vorschlägen zusammenfassen.
1. Einmalige Maßnahmen gehören in den Aufbau des Formulars.
Also
interval bestimmen,
today,
tomorrow
2. Anzeige aktualisieren gehört in eigene Prozeduren:
Delphi-Quellcode:
procedure MyForm.StringGrid1Zeigen(dieseSeite: integer);
begin
...
end;
procedure MyForm.StringGrid2Zeigen(dieseSeite: integer);
begin
...
end;
3. Daten einlesen gehört in eine eigene Prozedur.
Hier werden auch die Einstellungen vorgenommen, die nur dafür geändert werden müssen:
Delphi-Quellcode:
procedure MyForm.NeueDatenEinlesen;
begin
// Einstellungen auf "Einlesen" umschalten
PageControl1.TabIndex := 2;
Label5.Caption:='Meldungen';
Label6.Caption:='';
TimerNextTab.Enabled := false;
// Daten einlesen
...
// erste Seite zur Anzeige vorbereiten
AktuSeite := 0;
StringGrid1Zeigen((0);
// Einstellungen auf "Anzeigen" umschalten
Label5.Caption:='Vertretungsplan für den';
Label6.Caption:=DatetoStr(tomorrow);
PageControl1.TabIndex := 0;
// und natürlich das Umschalten aktivieren
TimerNextTab.Enabled := true;
end;
4. Die Timer-Aktion reduziert sich auf einen Verteiler.
Das ist unbedingt die wichtigste Änderung, die Du vornehmen musst!
Delphi-Quellcode:
procedure TForm2.TimerNextTabTimer(Sender: TObject);
begin
case PageControl1.TabIndex of
0: begin
PageControl1.TabIndex := 1;
StringGrid2Zeigen(AktuSeite);
1: if (AktuSeite < GesSeiten)
then begin
Inc(AktuSeite);
StringGrid1Zeigen(AktuSeite);
PageControl1.TabIndex := 0;
end
else begin
NeueDatenEinlesen;
end;
2: // kommt eigentlich wegen NeueDatenEinlesen gar nicht mehr vor,
// aber vielleicht ergibt sich noch etwas, deshalb dummy-Code:
begin
end;
end;
Ich habe die Unterscheidungen bei AktuSeite(a) und GesSeiten(a) nach wie vor nicht verstanden. Weil das interval der beiden Timer gleich ist, verstehe ich auch nicht, warum Du zwei Timer haben willst.
Versuch doch einmal eine solche Struktur und berücksichtige meine Bemerkungen im letzten Post. Jürgen