{###########################################################}
{###########################################################}
procedure TProg.RememberTimerTimer(Sender: TObject);
Var i : Integer;
DL: Integer;
Rem: Boolean;
UpdateCheck: TStringList;
Ro: BirthdayRememberFunktionen.TOptionenOps;
begin
Rem:=false;
RememberTimer.Interval:=5000;
RO:=ReadOptions(ExtractFileDir(Prog.GebRemDir)+'\options.ini');
Liste2.Clear;
ReadData(Liste2,GebRemDir);
if LastColumn<>nil then
begin
if LastDir then LastDir:=false else LastDir:=true;
ListeColumnClick(Prog,LastColumn);
end;
If Liste2.Items.Count=0 Then
begin
Exit;
end;
For i:=0 to Liste2.Items.Count-1 do
Begin
if Length(Liste2.Items[i].SubItems[0])=6 then
DL:=DaysLeft(DayOf(StrToDate(Liste2.Items[i].SubItems[0]+IntToStr(YearOf(Now)-1))),MonthOf(StrToDate(Liste2.Items[i].SubItems[0]+IntToStr(YearOf(Now)-1))),YearOf(Now)-1)
else
DL:=DaysLeft(DayOf(StrToDate(Liste2.Items[i].SubItems[0])),MonthOf(StrToDate(Liste2.Items[i].SubItems[0])),YearOf(StrToDate(Liste2.Items[i].SubItems[0])));
If ((Liste2.Items[i].SubItems[2]='In drei Wochen')and(Ro.wann[0]))or
((Liste2.Items[i].SubItems[2]='In zwei Wochen')and(Ro.wann[1]))or
((Liste2.Items[i].SubItems[2]='In einer Woche')and(Ro.wann[2]))or
((Liste2.Items[I].SubItems[2]='In 5 Tagen')and(Ro.wann[3]))or
((Liste2.Items[I].SubItems[2]='Übermorgen')and(Ro.wann[4]))or
((Liste2.Items[i].SubItems[2]='Morgen')and(Ro.wann[5]))or
((Pos('##3WO##',Liste2.Items[i].SubItems[3])<>0)and(
DL=21))or
((Pos('##2WO##',Liste2.Items[i].SubItems[3])<>0)and(
DL=14))or
((Pos('##1WO##',Liste2.Items[i].SubItems[3])<>0)and(
DL=7))or
((Liste2.Items[i].SubItems[2]='Heute')and(Ro.wann[6]))then
begin
Rem:=true;
Application.ProcessMessages;
if (Pos('##3WO##',Liste2.Items[i].SubItems[3])<>0) then
Remember(Liste2.Items[I].Caption,'In drei Wochen',Liste2.Items[i].SubItems[0],false)
else
if (Pos('##2WO##',Liste2.Items[i].SubItems[3])<>0) then
Remember(Liste2.Items[I].Caption,'In zwei Wochen',Liste2.Items[i].SubItems[0],false)
else
if (Pos('##1WO##',Liste2.Items[i].SubItems[3])<>0) then
Remember(Liste2.Items[I].Caption,'In einer Wochen',Liste2.Items[i].SubItems[0],false)
else
Remember(Liste2.Items[I].Caption,Liste2.Items[i].SubItems[2],Liste2.Items[i].SubItems[0],false);
end;
End;
if (Prog.enabled)and(ParamStr(1)='los')and(AlUpdatecheck)and(ReadOptions(ExtractFileDir(GebRemDir)+'\options.ini').onlycheck) then
begin
Prog.Close;
Application.Terminate;
Halt;
end;
If (Rem=False)and(AlUpdatecheck=false) then
begin
UpdateCheck:=TStringList.Create;
UpDateCheck.AddStrings(UpdateAviable); //Daran liegts nicht!
if UpdateCheck[0]='TRUE' then
Begin
Prog.Show;
SwitchToThisWindow(Prog.handle, True);
If MessageDlg('Es existiert folgende, neuere Version von BirthdayRemember:'+#10+'Version: '+UpdateCheck[1]+#10+'Erscheinungsdatum: '+UpdateCheck[2]+#10+'Download-
Url: '+UpdateCheck[3]+#10+'Soll diese nun downgeloadet werden?',mtConfirmation,[mbYes,mbNo],0)=mrYes then
Begin
ShellExecute(
handle,'open',PChar(UpdateCheck[3]), nil,nil,sw_show);
End ELSE
Begin
messagedlg('Sie können die Version manuell auf [
url]http://www.BirthdayRemember.de[/
url] updaten',mtInformation,[mbOk],0);
End;
End;
AlUpdatecheck:=true;
end;
UpdateCheck.Free;
end;
{###########################################################}
{###########################################################}
{###########################################################}
{###########################################################}
{Errechnet die restlichen Tage bis zu einem Datum}
function DaysLeft(day,month,year: integer):integer;
var nextGeb: TDate;
begin
nextGeb:=EncodeDate(YearOf(Now)+1,month,day);
result:=DaysBetween(Now,nextGeb);
while result>=DaysInYear(Now) do
result:=result-DaysInYear(Now);
end;
{###########################################################}
{###########################################################}
{###########################################################}
{###########################################################}
procedure TProg.ReadData(Liste: TListView;datei: String);
var Ini: TMemIniFile;
Namen: TStringList;
I: Integer;
Item: TListItem;
begin
{Datei auf Fehler prüfen}
CheckBrFile(datei);
//Datei öffnen
ini:=TMemIniFile.Create(datei);
Namen:=TStringList.Create;
//Sections(Namen) in TStringList laden
ini.ReadSections(Namen);
//Wenn noch keine Einträge
if Namen.count=0 then
exit; //Raus
//Alle abarbeiten
For I:=0 to Namen.Count-1 do
begin
{Item hinzufügen}
item:=Liste.Items.Add;
{Name auf das erste Feld}
item.Caption:=namen[i];
{Geburtstag auf das zweite Feld}
if copy(ini.ReadString(Namen[i],'gebtag','01.01.2000'),7,4)='9999' then
item.SubItems.Add(copy(ini.ReadString(Namen[i],'gebtag','01.01.2000'),0,6))
else
item.SubItems.Add(ini.ReadString(Namen[i],'gebtag','01.01.2000'));
{Alter aufs dritte Feld}
item.SubItems.Add(Alter(ini.ReadString(Namen[i],'gebtag','1.1.2002')));
{Zeit bis dorthin aufs vierte Feld}
item.Subitems.Add(ZeitBis(StrToDate(ini.ReadString(Namen[i],'gebtag','01.01.2000'))));
{Bemerkung aufs fünfte Feld}
item.SubItems.Add(ini.ReadString(Namen[i],'bem','(Keine)'));
Application.processMessages;
end;
Ini.Free;
Namen.Free;
end;
{###########################################################}
{###########################################################}