Registriert seit: 10. Feb 2007
Ort: Bersenbrück
547 Beiträge
Delphi 7 Enterprise
|
Re: Über Timer Stringlist 'weiterschalten'
28. Mai 2007, 19: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
|
|
Zitat
|