مشاهده نسخه کامل
: Xcalendar – مجموعه تقویم عمومی برای دلفی
جدیدترین نسخه از مجموعه XCalendar را می توانید از آدرس زیر دریافت کنید:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
این هم چند کنترل انتخاب تاریخ از مجموعه TMS Planner سازگار شده با تقویم ها و رویدادهای XCalendar و با پشتیبانی از BiDiMode شامل:
TPlannerCalendar
TPlannerDatePicker
TPlannerMaskDatePicker
TDBPlannerCalendar
TDBPlannerDatePicker
TPlannerDBDatePicker
TPlannerDBMaskDatePicker
یک تصویر نمونه از TPlannerCalendar:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
لینک دریافت مجموعه این کنترل ها به همراه XCalendar 1.1.1: (حجم 150 کیلوبایت)
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
این هم یک توضیح کلی راجع به این مجموعه: (البته در فایل readme کاملترش هست)
XCalendar با الهام از کلاس Calendar موجود در دات نت اما برای دلفی نوشته شده تا بتوان از تاریخ/زمان های TDateTime دلفی در گاهشماری های گوناگون استفاده کرد. همانطور که میدانید نوع TDateTime در دلفی یک عدد اعشاری است که زمان سپری شده از یک زمان خاص را نشان میدهد با به طور دقیقتر: قسمت صحیح آن تعداد روزهای گذشته از تاریخ 30 دسامبر 1899 میلادی (مثبت یا منفی) و قسمت اعشاری آن بیانگر کسری از روز 24 ساعته است که سپری شده.
هر تقویم (گاهشماری) زمان را با قوانین خود به واحدهایی مثل سال و ماه و روز تقسیم میکند. بنابراین میتوان مقادیر TDateTime را به واحدهای هر تقویم decode کرد و تاریخ های هر تقویم را نیز میتوان به نوع TDateTime، انکود کرد.
تقویم های این مجموعه همگی از کلاس TXCalendar مشتق شده اند که متدهای آن همنام توابع موجود در SysUtils و DateUtils هستند تا کارهایی از قبیل decode کردن یا فرمت کردن تاریخ، محاسبه شماره هفته در سال، محاسبه آخرین جمعه ماه، افزودن 3 روز به یک تاریخ و ... را انجام دهند. تنها کاری که تقویم های مشتق شده باید انجام دهند این است که چند متد abstract برای encode و decode تاریخ و محاسبه سالهای کبیسه و تعداد روز در سالها و ماهها را override کنند.
مثال:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدTXCalendar را از TComponent مشتق کرده ام تا بتوان تقویم ها را روی فرم قرار داد. خاصیت FormatSettings برای تنظیم نام ماه ها و DateSeparator و دیگر ثوابت مربوط به کارهای رشته ای هست. خاصیت WeekStartDay روز آغاز هفته و خاصیت WeekRule قانون شمارش هفته ها را مشخص می کند.
فعلا تقویم های میلادی، هجری شمسی با دوره 33 ساله، هجری شمسی با محاسبات نجومی، هجری قمری با دوره 30 ساله و هجری قمری با قابلیت تطبیق با داده های مشاهده شده هلالی انجام شده اند.
برای تبدیل تاریخ از یک تقویم به تقویم دیگر باید آنرا با کامپوننت تقویم اول encode کنید و مقدار حاصل را با کامپوننت تقویم دوم decode کنید.
فیلد های دیتابیس سازگار با XCalendar هم در پنجره New Field اضافه میشوند که با ست کردن خاصیت XCalendar آنها میتوان تقویم مورد نظر برای نمایش و گرفتن مقدار را انتخاب کرد.
رویدادهای سالانه و نجومی هم از کلاس TCustomXCalendarEvents مشتق شده اند که میتوان وقوع های آنها را بین دو تاریخ با متد FindIntervalEvents بدست آورد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدرویدادهای سالانه در کامپوننت TXCalendarEvents بصورت یک Collection از رویدادها هست که با دابل کلیک روی کامپوننت میتوانید آنها را ویرایش کنید.
کنترل های انتخاب تاریخ هم به سادگی با ست کردن خاصیت XCalendar به شکل تقویم مورد نظر تبدیل میشوند و با ست کردن خاصیت XCalendarEvents رویدادهای کامپوننت مورد نظر را مشخص می کنند. کنترل اصلی TPlannerCalendar است که در کامپوننت های دیگر با کلیک روی دکمه شان یک instance از آن نمایش داده میشود که خواصش از طریق خاصیت Calendar قابل دسترسی است.
چند دمو هم در مجموعه موجود هست.
SadeghPM
30-08-2008, 09:45
لینک دریافت مجموعه این کنترل ها به همراه XCalendar 1.0.1: (حجم 150 کیلوبایت)
با تشکر ...آقا این 150 کیلوبایت چیزی بود که تو Rapidshare آپلود کردین؟
سلام
این هم لینک جدید:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدمتاسفانه در این فروم نمیشه فایل آپلود کرد.
SadeghPM
10-09-2008, 09:46
آقا من این کامپونت رو نصب کردم ..یه 1 روزی هم کار کرد ..بعدش هم به کلی Delphi رو بهم ریخت !!!!
سلام
لطفا نسخه دلفی و مشکل به وجود آمده را دقیقتر توضیح بدید.
P A R M I S
08-10-2008, 18:23
با سلام
چرا موقع اجرا کردن برنامه های تقویم (مثل همین تقویم ) خطای زیر ظاهر می شه
field form1.hijriCalendar1 does not have a corresponding component. Remove the declaration? Yes no cancel
که اگر no رو بزنم خطای زیر می یاد
field form1.PersianCalendar1 does not have a corresponding component. Remove the declaration? Yes no cancel
و با no زدن این باز خطای دیگه ای می یاد
field form1.GregorianCalendar1 does not have a corresponding component. Remove the declaration? Yes no cancel
و روی فرم می ره و خطای زیر رو می نویسه
[Fatal Error] Unit1.pas(7): File not found: 'xcalClass.dcu'
اگه از همون ابتدا هم yes رو بزنم و همه خطاهای بالا بازم می یاد و با yes زدن روی فرم می ره و پیغام زیر رو می ده
[Fatal Error] Unit1.pas(7): File not found: 'xcalClass.dcu'
و من اصلا حالت اجرای تقویم رو نمی تونم ببینم و برنامه تقویم اصلا اجرا نمی شه
برای تقویم های دیگه هم همچین پیغام هایی می یاد
P A R M I S
10-10-2008, 15:50
سلام لطفا جواب بدین دیگه من هنوز منتظرم
P A R M I S
12-10-2008, 09:08
یک نفر به سوالم جواب بده دیگه خسته شدم هی اومدم و دیدم هنوز کسی جواب نداده کسی نیست ؟
SadeghPM
12-10-2008, 18:27
یک نفر به سوالم جواب بده دیگه خسته شدم هی اومدم و دیدم هنوز کسی جواب نداده کسی نیست ؟
من فکر می کنم که شما مسیر فایل های کامپایل شده رو به درستی برای دلفی مشخص نکردین...توی readme فایل های کامپونت به صورت کامل توضیح داده شده.
چون بصورت دستی کار نصب انجام شده باید مسیر فایل های برنامه ) را از طریق tools\enviroment options صفحه library اضافه کنیم تا برنامه درست کامپایل بشه
لطفا نسخه دلفی و مشکل به وجود آمده را دقیقتر توضیح بدید.
ورژن دلفیم 7 هست ... و یه اررور میده مبنی بر اینکه نمی تونه فایل که اسمش یادم نیست رو بخونه فکر می کنم فایل bpl7. هست!!! یا یه چیزی تو همین مایه ها!!!
P A R M I S
13-10-2008, 10:17
من از دلفی 6 استفاده می کنم آخه من که اصلا به هیچ قسمت از برنامه های دانلود شده دست نمی زنم فقط فایل dpr اون رو باز می کنم و f9 رو برای اجرا می زنم
SadeghPM
13-10-2008, 18:56
چون بصورت دستی کار نصب انجام شده باید مسیر فایل های برنامه ) را از طریق tools\enviroment options صفحه library اضافه کنیم تا برنامه درست کامپایل بشه
ببين دوست من به اين عمل كن!!!
tabap30world
15-10-2008, 21:38
با سلام
خيلي ممنون و متشكرم كه اين كامپوننت رو روي سايت گذاشتيد.ولي من يه مشكل توي تاريخ قمري ديدم اونم اين بود كه روز 24 مهرماه 87 رو كه برابر با 15 شوال مي باشد يك روز كمتر يعني 14 شوال نمايش مي دهد.
اگر مشكلي در كامپوننت وجود داره لطف كنيد اون رو اعلام كيند و يا اينكه راه حل مشكل رو ارائه بديد خيلي ممون از همه ي زحماتي كه در اين راه خرج كرديد.
درضمن اگه كسي هست كه سورس تبديل تاريخ ميلادي به قمري رو داشته باشه و در اختيار ما قرار بده يا آدرسش رو بده خيلي خيلي ممونشم و دعاش ميكنم.خودم يه سورس دارم ولي متاسفانه همون مشكل تقويم Xcalendar رو داره.
seyed_farid
20-10-2008, 16:29
با سلام.
ولي دوست عزيز من ازش استفاده ميكنم و اين مشكل را ندارم و درست ميدهد.
ببين كمپوننتتون آپديت هست؟
سلام
چرا موقع اجرا کردن برنامه های تقویم (مثل همین تقویم ) خطای زیر ظاهر می شهشما قبل از اجرای demo های این مجموعه باید آن را در دلفی نصب کنید. طریقه نصب هم در فایل Install.txt توضیح داده شده. خلاصه اش هم اینه که باید فایل dpk مناسب نسخه دلفی خودتون رو در دلفی باز کنید و Compile و Install رو بزنید و بعدش هم مسیر فایل های سورس رو به Library Path دلفی اضافه کنید.
ورژن دلفیم 7 هست ... و یه اررور میده مبنی بر اینکه نمی تونه فایل که اسمش یادم نیست رو بخونه فکر می کنم فایل bpl7. هست!!! یا یه چیزی تو همین مایه ها!!!متاسفانه نمی دانم علت مشکل پیش آمده برای شما چیست. البته خودم هم متوجه یک مشکل در مورد فیلدهای دیتابیس شده ام که هنگام بستن پروژه ای که از این فیلد ها استفاده می کند گاهی اوقات پیغام Access violation صادر می شود و دلفی را به هم می ریزد. اگر کسی علت این مشکل را می داند ممنون می شوم پاسخ بدهد.
خيلي ممنون و متشكرم كه اين كامپوننت رو روي سايت گذاشتيد.ولي من يه مشكل توي تاريخ قمري ديدم اونم اين بود كه روز 24 مهرماه 87 رو كه برابر با 15 شوال مي باشد يك روز كمتر يعني 14 شوال نمايش مي دهد.تقویم قمری مورد استفاده در ایران بر اساس مشاهده هلال ماه می باشد. البته طول پیش بینی شده ماه های قمری مصادف با هر سال شمسی برای استفاده در تقویم ها، قبل از آغاز آن سال اعلام می شود.
THijriCalendar موجود در این مجموعه تقویم قمری قراردادی را پیاده سازی می کند که دوره های سالهای کبیسه و عادی آن مشخص است (در دو نوع معمول که با خاصیت LeapYearsKind قابل انتخاب است) و همچنین طول ماه های آن مطابق قرارداد می باشد. (البته با استفاده از OnGetDaysInAMonth قابل تغییر است).
با استفاده از TObservedHijriCalendar می توانید داده های مشاهده شده (یا پیش بینی شده) را در تقویم لحاظ کنید. یعنی علاوه بر استفاده از OnGetDaysInAMonth برای دادن طول ماه های هر سال قمری، با استفاده از OnFindLeapYears سال های کبیسه (355 روزه) قمری را مشخص کنید. البته در یک محدوده که با MinObservedYear و MaxObservedYear مشخص می شود و سال پایه و تفاوت آغاز آن با آغاز قراردادی همان سال را با BaseYear و BaseYearAdjustment مشخص می کنید. برای توضیحات کاملتر به بخش های 1.5 و 1.6 فایل readme مراجعه کنید. دموی IranEvents هم یک مثال کامل در این مورد است.
درضمن اگه كسي هست كه سورس تبديل تاريخ ميلادي به قمري رو داشته باشه و در اختيار ما قرار بده يا آدرسش رو بده خيلي خيلي ممونشم و دعاش ميكنم.لطفا پست سوم را بخوانید:
برای تبدیل تاریخ از یک تقویم به تقویم دیگر باید آنرا با کامپوننت تقویم اول encode کنید و مقدار حاصل را با کامپوننت تقویم دوم decode کنید.مثلا:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدکه البته در اینجا برای encode کردن تاریخ میلادی از تابع موجود در دلفی استفاده کرده ام و بجای decode کردن، مستقیما متد FormatDateTime کامپوننت را بکار برده ام.
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.