Einzelnen Beitrag anzeigen

Svenkan

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

Re: Über Timer Stringlist 'weiterschalten'

  Alt 28. Mai 2007, 18:44
(bitte nicht wieder wg. Einrückung schlagen )

GetData-Procedure:

Delphi-Quellcode:
procedure TForm2.GetData;
var y,ya: Integer;
begin
Label7.Caption:=TimeToStr(Time);
Label8.Caption:=DateToStr(Now);
if not (Query1.RecordCount=0) then begin
 SetLength(Daten,Query1.RecordCount);

  for y:=1 to Query1.RecordCount do begin
    daten[y-1].klasse:=Query1.FieldByName('KLASSEN').AsString;
    daten[y-1].stunde:=Query1.FieldByName('S').AsString+'.';
    daten[y-1].fuer:=Query1.FieldByName('FUER').AsString;
    daten[y-1].wer:=Query1.FieldByName('WER').AsString;
    daten[y-1].fach:=Query1.FieldByName('FACH').AsString;
    daten[y-1].bemerkung:=Query1.FieldByName('BEMER_SCH').AsString;
    daten[y-1].raum:=Query1.FieldByName('RAUM').AsString;

    Query1.Next;
  end;

  gesseiten:=length(Daten) div 19;
  aktuseite:=0;
 end;

if NOT (Query2.RecordCount=0) then begin
 SetLength(Daten2,Query2.RecordCount);
  for ya:=1 to Query2.RecordCount do begin
    daten2[ya-1].klasse:=Query2.FieldByName('KLASSEN').AsString;
    daten2[ya-1].stunde:=Query2.FieldByName('S').AsString+'.';
    daten2[ya-1].wer:=Query2.FieldByName('WER').AsString;
    daten2[ya-1].fuer:=Query2.FieldByName('FUER').AsString;
    daten2[ya-1].fach:=Query2.FieldByName('FACH').AsString;
    daten2[ya-1].bemerkung:=Query2.FieldByName('BEMER_SCH').AsString;
    daten2[ya-1].raum:=Query2.FieldByName('RAUM').AsString;

    Query2.Next;
  end;

  gesseitena:=length(Daten2) div 19;
  aktuseitea:=0;
end;
end;
Timer-Aufruf:

Delphi-Quellcode:
procedure TForm2.TimerReloadTimer(Sender: TObject);
var
   Ini: TIniFile;
   y,ya,i,ia,count,counta,ReloadTime,dnr:integer;
   morgen_m,heute_d,morgen_d: String;
   tomorrow,today: TDateTime;
begin
GetData;

  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 if dnr=1 then begin
   today:=Date+1;
   tomorrow:=Date+2;
  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
  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].bemerkung;
    stringgrid1.Cells[6,i+1]:= Daten[i+y].raum;
  end;

  if AktuSeite = GesSeiten then
    AktuSeite := 0
  else
    AktuSeite:=AktuSeite+1;

 heute_d := LongDayNames[DayOfWeek(today)];

 Label5.Caption:='Vertretungsplan für den';
 Label6.Caption:=DateToStr(today)+' ('+heute_d+')';

 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[2,ia+1]:= Daten2[ia+ya].fuer;
    stringgrid2.Cells[3,ia+1]:= Daten2[ia+ya].wer;
    stringgrid2.Cells[4,ia+1]:= Daten2[ia+ya].fach;
    stringgrid2.Cells[5,ia+1]:= Daten2[ia+ya].bemerkung;
    stringgrid2.Cells[6,ia+1]:= Daten2[ia+ya].raum;
  end;

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

  morgen_d := LongDayNames[DayOfWeek(tomorrow)];

  Label5.Caption:='Vertretungsplan für den';
  Label6.Caption:=DateToStr(tomorrow)+' ('+morgen_d+')';

 end
 else if PageControl1.TabIndex=2 then begin
  Label5.Caption:='Meldungen';
  Label6.Caption:='';
 end;

 TimerReload.Interval:=ReloadTime;
 if PageControl1.TabIndex=0 then TimerNextTab.Interval:=ReloadTime*(GesSeiten+1)
 else if PageControl1.TabIndex=1 then TimerNextTab.Interval:=Reloadtime*(GesSeitena+1)
 else if Pagecontrol1.TabIndex=2 then TimerNextTab.Interval:=ReloadTime;
 TimerNextTab.Enabled:=True;
end;
Sven Kannenberg
  Mit Zitat antworten Zitat