امروز به یه مشکل تو این کامپوننت برخورد کردم که خوشبختانه بطرف کردم.
مشکل اینه که تابع DecDay که یه پارامتر عددی داره و برحسب مقدار پارامتر روز را کم کرده و تاریخ را نمایش میده . البته با کم کردن روز ، ماه و سال هم کم میشه. مشکل اینجاست که وقتی مثلا تاریخ 1390/11/02 باشه و حالا از این تاریخ 7 روز را توسط تابع DecDay کم کنید ، آن وقت خروجی شما خواهد بود 1390/10/30 و این تاریخ صحیح نیست.
کد زیر را جایگزین کد کامپوننت کنید.
function DecDay(ADate: string; DateKind: TDateKind; ANumberOfDay: integer = 1): string;
var
Year, Month, Day: word;
TempDay: Integer;
begin
SeparateYMD(ADate, Year, Month, Day);
if Day - ANumberOfDay >= 1 then
Dec(Day, ANumberOfDay)
else
begin
if Month > 1 then
begin
{Update Code}
TempDay:= Day {Insert};
Dec(Month);
Day := DaysOfMonths[DateKind, Month];
{Dec Day Now Return True Day}
Dec(Day, Abs(TempDay - ANumberOfDay));{Insert}
end
else
DecMonth(ADate, DateKind, ANumberOfDay);
end;
Result := ConcatenateDate(Month, Year, Month, Day);
end;