Einzelnen Beitrag anzeigen

Svenkan

Registriert seit: 10. Feb 2007
Ort: Bersenbrück
547 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Timerabruf (Timer2) bei Timerablauf (Timer1)

  Alt 19. Mai 2007, 18:20
Reload-Prozedur

Delphi-Quellcode:
procedure TForm2.TimerReloadTimer(Sender: TObject);
var
   Ini: TIniFile;
   y,ya,i,ia,count,count2,counta,countb,ReloadTime,dnr:integer;
   morgen_m: String;
   tomorrow,today: TDateTime;
begin
  dnr:=DayOfWeek(Date);
  if dnr=7 then begin
   today:=Date+2;
   tomorrow:=Date+3;
  end
  else if dnr=6 then begin
   today:=Date+3;
   tomorrow:=Date+4;
  end
  else begin
   today:=Date;
   tomorrow:=Date+1;
  end;

 try
    Ini:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'conf.ini');
    ReloadTime:=(Ini.ReadInteger('Zeiteinstellungen','Tagwechsel',10)*1000);
    morgen_m:=Ini.ReadString('Zeiteinstellungen','Datum morgen',DatetoStr(tomorrow));
    if StrToDate(morgen_m)<tomorrow then morgen_m:=DateToStr(tomorrow)
    else tomorrow:=StrToDate(morgen_m);
  finally
    Ini.Free;
  end;

  if PageControl1.TabIndex=0 then begin
   Label5.Caption:='Vertretungsplan für den';
   Label6.Caption:=DateToStr(today)+' (heute)';
  end
  else if PageControl1.TabIndex=1 then begin
   Label5.Caption:='Vertretungsplan für den';
   Label6.Caption:=DatetoStr(tomorrow);
  end
  else begin
   Label5.Caption:='Meldungen';
   Label6.Caption:='';
  end;

  TimerReload.Interval:=ReloadTime;

 if PageControl1.TabIndex=0 then begin

  if aktuseite = Gesseiten then
    count := length(Daten) mod 19
  else
    count := 19;
  y:= 19*AktuSeite;
  stringgrid1.RowCount:=count+1;
  for i:=0 to count-1 do begin
    stringgrid1.Cells[0,i+1]:= Daten[i+y].klasse;
    stringgrid1.Cells[1,i+1]:= Daten[i+y].stunde;
    stringgrid1.Cells[2,i+1]:= Daten[i+y].fuer;
    stringgrid1.Cells[3,i+1]:= Daten[i+y].wer;
    stringgrid1.Cells[4,i+1]:= Daten[i+y].fach;
    stringgrid1.Cells[5,i+1]:= Daten[i+y].raum;
    stringgrid1.Cells[6,i+1]:= Daten[i+y].bemerkung;
  end;

  if AktuSeite = GesSeiten then
    AktuSeite := 0
  else
    AktuSeite:=AktuSeite+1;
 end
 else if PageControl1.TabIndex=1 then begin

  if aktuseitea = Gesseitena then
    counta := length(Daten2) mod 19
  else
    counta := 19;
  ya:= 19*AktuSeitea;

  stringgrid2.RowCount:=counta+1;
  for ia:=0 to counta-1 do begin
    stringgrid2.Cells[0,ia+1]:= Daten2[ia+ya].klasse;
    stringgrid2.Cells[1,ia+1]:= Daten2[ia+ya].stunde;
    stringgrid2.Cells[3,ia+1]:= Daten2[ia+ya].fuer;
    stringgrid2.Cells[2,ia+1]:= Daten2[ia+ya].wer;
    stringgrid2.Cells[4,ia+1]:= Daten2[ia+ya].fach;
    stringgrid2.Cells[5,ia+1]:= Daten2[ia+ya].raum;
    stringgrid2.Cells[6,ia+1]:= Daten2[ia+ya].bemerkung;
  end;

  if AktuSeitea = GesSeitena then
    AktuSeitea := 0
  else
    AktuSeitea:=AktuSeitea+1;
 end;

TimerNextTab.Enabled:=True;
end;
NextTab-Timer:

Delphi-Quellcode:
procedure TForm2.TimerNextTabTimer(Sender: TObject);
var Ini: TIniFile;
    dnr,interval: Integer;
    morgen_m: String;
    tomorrow,today: TDateTime;
begin
  dnr:=DayOfWeek(Date);
  if dnr=7 then begin
   today:=Date+2;
   tomorrow:=Date+3;
  end
  else if dnr=6 then begin
   today:=Date+3;
   tomorrow:=Date+4;
  end
  else begin
   today:=Date;
   tomorrow:=Date+1;
  end;

 try
    Ini:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'conf.ini');
    interval:=(Ini.ReadInteger('Zeiteinstellungen','Tagwechsel',10)*1000);
    morgen_m:=Ini.ReadString('Zeiteinstellungen','Datum morgen',DatetoStr(tomorrow));
    if StrToDate(morgen_m)<tomorrow then morgen_m:=DateToStr(tomorrow)
    else tomorrow:=StrToDate(morgen_m);
  finally
    Ini.Free;
  end;

if PageControl1.TabIndex=0 then
    begin
    PageControl1.TabIndex:=1;
    TimerNextTab.Enabled:=False;
    TimerNextTab.Interval:=interval;
    Label5.Caption:='Vertretungsplan für den';
    Label6.Caption:=DateToStr(today)+' (heute)';
    end
    else
      if PageControl1.TabIndex=1 then
        begin
          PageControl1.TabIndex:=2;
          TimerNextTab.Enabled:=False;
          TimerNextTab.Interval:=interval;
          Label5.Caption:='Vertretungsplan für den';
          Label6.Caption:=DateToStr(Tomorrow);
        end
        else
          if PageControl1.TabIndex=2 then
            begin
            PageControl1.TabIndex:=0;
            TimerNextTab.Enabled:=False;
            TimerNextTab.Interval:=interval;
            Label5.Caption:='Meldungen';
            Label6.Caption:='';
            end
end;
Der Interval wird jeweils aus einer Ini-Datei ausgelesen.
Sven Kannenberg
  Mit Zitat antworten Zitat