سلام
البته این هم در فایل readme هست (بخش 3.1). کامپوننت TXCalendarEvents برای محاسبه وقوع رویدادهای سالانه کلی هست. خاصیت Events یک Collection از TXCalEventItem ها هست که هر کدام یک رویداد سالانه جداگانه را بوسیله خواص خود توصیف میکنند. معمولا باید پنج خاصیت XCalendar و Month و Day و Title و IsVacation ست شوند. اما در حالت کلی خواصی از TXCalEventItem ها که باید ست شوند بصورت زیر است:
1. XCalendar: تقویمی که وقوع این رویداد بر حسب آن محاسبه میشود. که باید به یک کامپوننت تقویم اشاره کند.
2. RuleType: نوع قانون برای محاسبه وقوع این رویداد. انواع زیر قابل انتخاب هستند:rtExactDay: یک روز مشخص از یک ماه مشخص در هر سال
rtNthDayOfWeekInMonth: قوانینی مانند سومین دوشنبه فوریه یا آخرین جمعه ماه رمضان
rtNthDayOfWeekAfterADay: قوانینی مانند دومین دوشنبه قبل از 25 می
rtNearestDayOfWeek: قوانینی مانند نزدیک ترین دوشنبه به 12 جولای
rtCustomRule: قانون دلخواه که در OnCustomRule کامپوننت TXCalendarEvents مربوطه تعریف میشود
3. خواص مربوط به نوع قانون:برای rtExactDay: خواص Month, Day
برای rtNthDayOfWeekInMonth: خواص Nth, DayOfWeek, Month
توجه: اعداد منفی برای Nth به معنی شمارش از انتهای ماه به عقب هستند مثلا -1 به معنی "آخرین" میباشد.
برای rtNthDayOfWeekAfterADay: خواص Nth, DayOfWeek, Month, Day
توجه: اعداد منفی برای Nth به معنی جستجو برای N امین روز هفته قبل از روز مشخص شده هستند.
برای rtNearestDayOfWeek: خواص DayOfWeek, Month, Day
برای rtCustomRule: رویداد OnCustomRule کامپوننت TXCalendarEvents را فراموش نکنید
4. (اختیاری) Corrections: میتوانید از این خاصیت استفاده کنید اگر تعدادی روز مشخص باید به تاریخ وقوع محاسبه شده افزوده شود یا اگر تاریخ وقوع نباید روزهای خاصی از هفته باشد.
5. Title: عنوان رویداد
6. FormatTitle (Boolean): اگر Title حاوی کاراکتر های فرمت تاریخ است که باید با توجه به تاریخ وقوع فرمت شوند این خاصیت را True کنید.
7. IsVacation (Boolean): اگر این رویداد یک روز تعطیل را مشخص میکند این خاصیت را True کنید.
برای save/load رویدادها در فایل یا stream با فرمت XML متدهای زیر در TXCalendarEvents وجود دارند:
procedure SaveToStream(Stream: TStream);
procedure LoadFromStream(Stream: TStream);
procedure SaveToFile(const FileName: string);
procedure LoadFromFile(const FileName: string);
لطفا توجه کنید که اگر میخواهید از این متدها استفاده کنید تمام کامپوننت های تقویم استفاده شده در رویدادها باید Owner یکسانی داشته باشند که در خاصیت XCalendarsOwner کامپوننت TXCalendarEvents مشخص کرده اید.
البته چون TXCalendarEvents یک کامپوننت است، میتوانید آنرا با استفاده از متدهای TStream/TWriter/TReader دلفی نیز save/load کنید.