با سلام
مشکل تغییر ماه از 31 روزه به 30 روزه را فهمیدم و در اینجا سورس آنرا میگذارم تا اگر برای کسی پیش آمد مثل من نصف روز وقت نگذارد تا سورس را بفهمد.
باید در روتینMonthComboClick عین زیر بنویسید سپس پروژه تان را اجرا کنید
دو خط از برنامه پاک شده اند (مقایسه با ماه 6 و روز 31 که اشتباها روز را به اضافه یک میکرد) الان برای تغییر ماه هیچ مشکلی ندارد. موفق باشید
Procedure TCustomSolarCalendar.MonthComboClick(Sender: TObject);
begin
FPrevMenuItem := FMonthCombo.ItemIndex + 1;
FCurrMonth := FMonthCombo.ItemIndex + 1;
if FCurrDay > DaysOfMonths[DateKind, FCurrMonth] then
FCurrDay:=DaysOFMonths[DateKind,FCurrMonth];
OutDate := ConcatenateDate(FCurrMonth, FCurrYear, FCurrMonth, FCurrDay);
FInDate := OutDate; //1384-03-15
MonthChanging();
end;
راستی اشکال دیگر راهم متوجه شدم. مربوط به AdvPane استفاده شده در فرمم بود( تقویم را برروی AdvPanel گذاشته بودم) با گذاشتن تقویم روی فرم مشکلم حل شد.