PDA

View Full Version : Xcalendar – مجموعه تقویم عمومی برای دلفی



adgteq
شنبه 26 مرداد 1387, 23:29 عصر
سلام

نسخه 1.1.1 از مجموعه XCalendar را می توانید از آدرس زیر دریافت کنید:


http://sourceforge.net/projects/xcalendar/files/شامل:


تقویم های مشتق شده از کلاس پایه TXCalendar (شبیه کلاس Calendar دات نت) که متدهای آن همنام توابع موجود در SysUtils و DateUtils هستند بصورت کامپوننت:


TGregorianCalendar
TPersianCalendar
TAstroPersianCalendar
THijriCalendar
TObservedHijriCalendar



فیلد های تاریخ-زمان دیتابیس با امکان انتخاب تقویم



محاسبه رویدادهای سالانه و نجومی



به همراه تبدیل قسمتی از پروژه +AA به دلفی برای محاسبات نجومی. (http://www.naughter.com)


خوشحال می شوم که از نظرات شما بهره مند شوم

adgteq
جمعه 01 شهریور 1387, 02:35 صبح
این هم چند کنترل انتخاب تاریخ از مجموعه TMS Planner سازگار شده با تقویم ها و رویدادهای XCalendar و با پشتیبانی از BiDiMode شامل:


TPlannerCalendar
TPlannerDatePicker
TPlannerMaskDatePicker
TDBPlannerCalendar
TDBPlannerDatePicker
TPlannerDBDatePicker
TPlannerDBMaskDatePicker


یک تصویر نمونه از TPlannerCalendar:

http://i36.tinypic.com/2cps2ti.gif



مجموعه کامل XCalendar 1.1.1 همراه با کنترلهای TMS Planner سازگار شده با آن را به این پست اتچ کرده ام. پکیج های لازم برای نصب رو هم اضافه کرده ام (با تشکر از مهران). البته متاسفانه روی دلفی 2009 قابل نصب نیست.


این هم لینک رپید شیرشه:

http://rapidshare.com/files/264440133/XCalPlanner_090806.rarتوجه: آخرین به روز رسانی این پست پس از پست شماره 48 انجام شده است

مهران موسوی
جمعه 01 شهریور 1387, 03:08 صبح
خوشحال می شوم که از نظرات شما بهره مند شوم

خيلي خوبه .. فقط اگه يك پكيج هم براش درست كني تا راحت تر نصب بشه فكر كنم بهتر باشه ...

adgteq
جمعه 01 شهریور 1387, 20:06 عصر
سلام

روش ساختن پکیج رو در فایل readme توضیح دادم. نمی تونستم برای همه نسخه های دلفی پکیج بسازم. امیدوارم در نصب مشکلی نداشته باشید.

دنیای دلفی
جمعه 01 شهریور 1387, 21:05 عصر
من پكيج را مي سازم ولي خطا مي ده و بعضي از فايلها را مي گه ندارم

Hsimple11
جمعه 01 شهریور 1387, 23:46 عصر
من پكيج را مي سازم ولي خطا مي ده و بعضي از فايلها را مي گه ندارم

نسخه دلفی شما چیست؟ آیا فایل های Pas را درست دریافت کرده اید؟

دنیای دلفی
شنبه 02 شهریور 1387, 00:27 صبح
دلفي 7 بله كمبود يك سري فايل پاس را مي گيره كه اصلا توي پروژه نيستشون ميشه همينجا آپلود كنيد

adgteq
شنبه 02 شهریور 1387, 00:41 صبح
سلام

برای نصب XCalendar در دلفی 6 به بالا باید پکیج DESIGNIDE را به لیست Requires اضافه کنید.
البته در فایل Install.txt کامل تر توضیح داده ام.
فکر نمی کنم اگر این کار را بکنید فایل pas دیگری نیاز داشته باشد.

Hsimple11
شنبه 02 شهریور 1387, 00:47 صبح
بله. من هم با همین نسخه کار میکنم و مشکلی نداشتم. مرسی جناب adgteq.

Hsimple11
شنبه 02 شهریور 1387, 00:58 صبح
راستی یه سوال در مورد کنترلهای TMS ای که سازگار با این تقویم قرار داده اید. آیا متدی خاص وجود داره که باید اون رو بر حسب اینکه از چه نوع تقویمی (Persian، ...) استفاده کنیم به این کنترل ها باید اختصاص بدیم یا نه؟ اینکه نوع تقویم کنترل رو تغییر بدیم.

سوال دوم. این تقویم مشکلی با استثناء هایی مثل سال کبیسه نداره؟

adgteq
شنبه 02 شهریور 1387, 01:18 صبح
1. دو property اضافه شده: XCalendar و XCalendarEvents که می توانید آنها را به کامپوننت تقویم و/یا رویداد دلخواه که قبلا روی فرم قرار داده اید ست کنید (تقویم ها و رویدادها را به صورت کامپوننت غیر بصری نوشته ام که صد البته در زمان اجرا هم قابل ایجاد هستند)

2. در مورد تقویم یک کمی تحقیق کردم. TPersianCalendar از دوره های 33 ساله (جلالی) استفاده می کنه که دقیقترین روش دوره ای برای فاصله نگرفتن آغاز سال از زمان اعتدال فروردین هست. TAstroPersianCalendar هم از قانون نجومی مصوب 1304 استفاده می کنه: اگر زمان اعتدال فروردین قبل از ظهر شرعی باشه همان روز روز اول ساله و اگر بعد از ظهر شرعی باشه روز بعد روز اول سال میشه. البته باید طول جغرافیایی را برای محاسبه زمان ظهر به آن داد. (این دو روش در حال حاضر تفاوتی در سالهای کبیسه با هم ندارند)

ariobarzan
سه شنبه 05 شهریور 1387, 08:59 صبح
ضمن تشكر
لطفا در مورد لينك با عناصر مربوط به تاريخ مثل MonthCalendar1 با اين كمپوننت ميشه توضيح بديد اگه يك مثال هم اتچ بشه كه عالي ميشه
لينك rapidshare هم چون توي شركت ما بسته شده نميتونم دانلود كنم با توجه به حجم كمي كه داره لطفا تو همين تاپيك اتچ كنيد
ممنون

adgteq
چهارشنبه 06 شهریور 1387, 03:38 صبح
سلام

این هم یک توضیح کلی راجع به این مجموعه: (البته در فایل readme کاملترش هست)

XCalendar با الهام از کلاس Calendar موجود در دات نت اما برای دلفی نوشته شده تا بتوان از تاریخ/زمان های TDateTime دلفی در گاهشماری های گوناگون استفاده کرد. همانطور که می‌دانید نوع TDateTime در دلفی یک عدد اعشاری (Double) است که زمان سپری شده از یک زمان خاص را نشان می‌دهد با به طور دقیقتر: قسمت صحیح آن تعداد روزهای گذشته از تاریخ 30 دسامبر 1899 میلادی (مثبت یا منفی) و قسمت اعشاری آن بیانگر کسری از روز 24 ساعته است که سپری شده.
هر تقویم (گاهشماری) زمان را با قوانین خود به واحدهایی مثل سال و ماه و روز تقسیم می‌کند. بنابراین می‌توان مقادیر TDateTime را به واحدهای هر تقویم decode کرد و تاریخ های هر تقویم را نیز می‌توان به نوع encode ،TDateTime کرد.
تقویم های این مجموعه همگی از کلاس TXCalendar مشتق شده اند که متدهای آن همنام توابع موجود در SysUtils و DateUtils هستند تا کارهایی از قبیل decode کردن یا فرمت کردن تاریخ، محاسبه شماره هفته در سال، محاسبه آخرین جمعه ماه، افزودن 3 روز به یک تاریخ و ... را انجام دهند. تنها کاری که تقویم های مشتق شده باید انجام دهند این است که چند متد abstract برای encode و decode تاریخ و محاسبه سالهای کبیسه و تعداد روز در سالها و ماهها را override کنند.
مثال:


dt := GregoianCalendar1.EncodeDate(2000, 1, 1);
w := HijriCalendar1.WeekOfTheYear(dt);
ShowMessage(
PersianCalendar1.FormatDateTime('dddd d mmmm yyyy hh:nn AM/PM', Now));
TXCalendar را از TComponent مشتق کرده ام تا بتوان تقویم ها را روی فرم قرار داد. خاصیت FormatSettings برای تنظیم نام ماه ها و DateSeparator و دیگر ثوابت مربوط به کارهای رشته ای هست. خاصیت WeekStartDay روز آغاز هفته و خاصیت WeekRule قانون شمارش هفته ها را مشخص می کند.
فعلا تقویم های میلادی، هجری شمسی با دوره 33 ساله، هجری شمسی با محاسبات نجومی، هجری قمری با دوره 30 ساله و هجری قمری با قابلیت تطبیق با داده های مشاهده شده هلالی انجام شده اند.
برای تبدیل تاریخ از یک تقویم به تقویم دیگر باید آنرا با کامپوننت تقویم اول encode کنید و مقدار حاصل را با کامپوننت تقویم دوم decode کنید.

فیلد های دیتابیس سازگار با XCalendar هم در پنجره New Field اضافه می‌شوند که با ست کردن خاصیت XCalendar آنها می‌توان تقویم مورد نظر برای نمایش و گرفتن مقدار را انتخاب کرد.

رویدادهای سالانه و نجومی هم از کلاس TCustomXCalendarEvents مشتق شده اند که می‌توان وقوع های آنها را بین دو تاریخ با متد FindIntervalEvents بدست آورد:


var
EOL: TXCalEventOccurenceList;
dt1, dt2: TDateTime;
i: Integer;
begin
dt1 := Date;
dt2 := dt1 + 7;
EOL := TXCalEventOccurenceList.Create;
try
XCalendarEvents1.FindIntervalEvents(dt1, dt2, EOL);
EOL.SortByDate;
for i := 0 to EOL.Count - 1 do
ShowMessage(PersianCalendar1.DateToStr(EOL[i].Date) + ' ' + EOL[i].DisplayText);
finally
EOL.Free;
end;
end;
رویدادهای سالانه در کامپوننت TXCalendarEvents بصورت یک Collection از رویدادها هست که با دابل کلیک روی کامپوننت می‌توانید آنها را ویرایش کنید.

کنترل های انتخاب تاریخ هم به سادگی با ست کردن خاصیت XCalendar به شکل تقویم مورد نظر تبدیل می‌شوند و با ست کردن خاصیت XCalendarEvents رویدادهای کامپوننت مورد نظر را مشخص می کنند. کنترل اصلی TPlannerCalendar است که در کامپوننت های دیگر با کلیک روی دکمه شان یک instance از آن نمایش داده می‌شود که خواصش از طریق خاصیت Calendar قابل دسترسی است.

چند دمو هم در مجموعه موجود هست.

التماس دعا

seyed_farid
جمعه 08 شهریور 1387, 02:54 صبح
با سلام
لطفاً روش ويرايش اتفاقات و ثبت آن را هم توضيح دهيد.

adgteq
جمعه 08 شهریور 1387, 06:31 صبح
سلام

البته این هم در فایل 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 کنید.

Delphi_Tips
یک شنبه 10 شهریور 1387, 15:02 عصر
با سلام
با ديدن تقويم شما واقعا خوشحال شدم كه بعد از مدتها براي دلفي يك تقويم كامل ساخته شده ولي الان كمي نااميد و خسته هستم چون از ديشب دارم روي كامپوننت شما كار ميكنم تا باگهاشو برطرف كنم :(

يك باگ خيلي بد داره ! با روز 31 ماه اگوست مشكل داره نميدونم مشكل از كجاست به نظرم از روش استانداردي براي تبديلات استفاده نكردين

تاريخ سيستمتون رو روي 31 اگوست 2008 ست كنين بعد تو دلفي سعي كنين يك datapicker روي فرم بذارين تا نتيجه رو ببينين

خيلي خوشحال ميشم اين باگ مهم رو برطرف كنين. فكر ميكنم با روز آخر بعضي از ماه هاي ديگه هم مشكل داشته باشه.

مچكرم.

seyed_farid
سه شنبه 12 شهریور 1387, 12:40 عصر
سلام
ما هم منتظریم تا پاسخ بگیریم که این باگ خفن از کجا ناشی میشه و تصحیح بشه.:متعجب:
ضمناً تعطيليهاي مهرماه امسال هم تو اين تقويم خيلي باحاله (زياد شده).:متفکر:
اما واقعاً كار بي مثلي انجام شده و بايد درست شه:تشویق::تشویق::تشویق:

adgteq
پنج شنبه 14 شهریور 1387, 17:52 عصر
سلام

ببخشید که یک مدت نبودم.



با سلام
با ديدن تقويم شما واقعا خوشحال شدم كه بعد از مدتها براي دلفي يك تقويم كامل ساخته شده ولي الان كمي نااميد و خسته هستم چون از ديشب دارم روي كامپوننت شما كار ميكنم تا باگهاشو برطرف كنم :(

يك باگ خيلي بد داره ! با روز 31 ماه اگوست مشكل داره نميدونم مشكل از كجاست به نظرم از روش استانداردي براي تبديلات استفاده نكردين

تاريخ سيستمتون رو روي 31 اگوست 2008 ست كنين بعد تو دلفي سعي كنين يك datapicker روي فرم بذارين تا نتيجه رو ببينين

خيلي خوشحال ميشم اين باگ مهم رو برطرف كنين. فكر ميكنم با روز آخر بعضي از ماه هاي ديگه هم مشكل داشته باشه.

مچكرم.


باگ برطرف شد. لینک دریافت را به روز کردم.
متشکرم که این اشکال را پیدا کردید. البته این اشکال ارتباطی به کامپوننت های تقویم نداشت و در اثر عجله هنگام copy/paste کدهای کنترل های TMS Planner بوجود آمده بود. یک خط در متد TXCalPlannerCalendar.ChangeMonth جا افتاده بود که اضافه شد. باید این نکته را هم بگویم که کد کنترل های انتخاب تاریخ TMS Planner خیلی خوب نوشته نشده اند و من هم هنگام تغییر دادن آنها خیلی دقت نکرده ام. اما XCalendar را با دقت بیشتری نوشته ام. علت انتخاب کنترل های TMS Planner هم این بود که با وجود کدنویسی بد، از ظاهر و امکانات خوبی برخوردار بودند.
با عبارت "کامپوننت شما" هم در اشاره به کامپوننت های TMS Planner موافق نیستم چون اصل کار مربوط به برنامه نویسان شرکت TMS Software هست و من فقط (بدون رعایت حقوق مولفین) مقداری تغییرات در آنها داده ام.
راستی خیلی شرمنده ام از اینکه باعث نا امیدی و خستگی شما شدم.




سلام
ما هم منتظریم تا پاسخ بگیریم که این باگ خفن از کجا ناشی میشه و تصحیح بشه.:متعجب:
ضمناً تعطيليهاي مهرماه امسال هم تو اين تقويم خيلي باحاله (زياد شده).:متفکر:
اما واقعاً كار بي مثلي انجام شده و بايد درست شه:تشویق::تشویق::تشویق:


البته متوجه نشدم که مشکلی هم دارد یا نه. احتمالا شما در دموی IranEvents یک کنترل انتخاب تاریخ اضافه کرده اید و آنرا به IranAggregateEvents متصل کرده اید (که البته بهترین کار است). اگر می خواهید فقط روزهای تعطیل را داشته باشید می توانید از دکمه Save all vacations در این دمو استفاده کنید و فایل ایجاد شده را در یک کامپوننت TXCalendarEvents لود کنید.

seyed_farid
پنج شنبه 14 شهریور 1387, 21:38 عصر
با سلام
اين برنامه رو ببينيد. اشكالش تو تعطيلات مهرماه چيه؟:افسرده:

adgteq
جمعه 15 شهریور 1387, 06:28 صبح
مشکل را دیدم. به احتمال زیاد مشکل در TXCalPlannerCalendar است که کدی که من برای نمایش رویدادهای XCalendar نوشته ام با ست کردن بعضی از خاصیت ها به اشکال برمی خورد. چون خودم که یکی دیگه روی فرم گذاشتم مشکل نداشت. متاسفانه الان وقت پیدا کردن مشکل رو ندارم. اگر توانستید حلش کنید خوشحال می شوم که اطلاع بدید.

در ضمن کدی که برای انتخاب اتفاقات نوشته اید اشکال دارد. احتمالا در نسخه بعد یک خاصیت Enabled برای آیتم های TXCalendarAggregateEvents اضافه می کنم.

باز هم ممنون


تصحیح: کد درست است. معذرت خواهی می کنم

pad_kay
شنبه 16 شهریور 1387, 09:59 صبح
سلام
با تشکر از کامپونت زیبا و جالب شما
شاید عده ای از دوستان کامپونت tms را نصب کرده باشند من با اجازه آقا/خانم adgteq تغییراتی در سورس دادم که در هنگام نصب error ندهد
باز هم از زحمات ایشان کمال تشکر را دارم

rainstorm
شنبه 16 شهریور 1387, 12:56 عصر
با سلام
ضمن تشکر از adgteq به خاطر این کامپوننت زیبا :تشویق: و pad_kay به علت مچ کردن آن با TMS Pack :تشویق: دو پیشنهاد دارم:
اول اینکه اگر امکانش وجود داره (که البته به نظر کار چندان سختی نمیرسه) PlannerCalendarGroup هم به مجموعه افزوده شود.
دوم اینکه DatePicker ها را به صورت DateTimePicker خود دلفی که داری تاریخ پیش فرض و چک صحیح بودن تاریخ وارد شده و قابلیت های دیگر از جمله افزایش یا کاهش با دکمه های Up و Down و ... ولی با قوانین تاریخ شمسی به آن اضافه شود که داخل ComboBox خالی نباشد؛
راهکار Mask چندان جالب به نظر نمیرسد، ضمن اینکه اجازه وارد کردن تاریخ نادرست را به کاربر میدهد
من یه برنامه نوشتم که این قوانین رو کنترل میکنه
مثلا اگه ماه 7 باشه تو روز اجازه نمیده کاربر عدد 31 رو وارد کنه
یا وقتی روز رو وارد میکنی به طور خودکار وارد ماه میشود و وقتی ماه رو وارد میکنی وارد قسمت سال میشود، دقیقا همانند DateTimePicker دلفی :لبخندساده:
اگه لازم شد اطلاع بدین تا هم سورسشو بدم هم کلیه توضیحات پیرامون قابلیتهاش
فقط توضیح دیگه اینکه روز، ماه، سال تو سه تا Edit جدا قرار دادم، چون نمیدونستم چه طوری میشه اینه سه تا رو توی یه کامپوننت پیاده و بین هر قسمت / بذارم
:لبخندساده:

pad_kay
شنبه 16 شهریور 1387, 13:14 عصر
مشکل را دیدم. به احتمال زیاد مشکل در TXCalPlannerCalendar است که کدی که من برای نمایش رویدادهای XCalendar نوشته ام با ست کردن بعضی از خاصیت ها به اشکال برمی خورد. چون خودم که یکی دیگه روی فرم گذاشتم مشکل نداشت. متاسفانه الان وقت پیدا کردن مشکل رو ندارم. اگر توانستید حلش کنید خوشحال می شوم که اطلاع بدید.

من با بررسی های که انجام دادم متوجه شدم زمانی این خطا پیش می آید که
1- همزان 1 روز خاص دارای رویداد در شمسی یا قمری و یا میلادی به طور همزمان باشد بعنوان مثال اتفاقی که برای ماه مهر می افتد این است که روز 5 در قمری و شمسی دارای رویداد می باشد در قمری تعطیل است
2-اولین روز مشترک باشد
3 - در یکی از آنها تعطیل باشد
اگر امکان دارد در مورد نحوه خواندن و ست کردن TXCalendarEvents در TXCalPlannerCalendar توضیحاتی بیان فرمائید تا بتوانم این اشکال را رفع کنم لازم به ذکر است این اشکال در اسفندماه سال 1387 نیز اتفاق می افتد



احتمالا در نسخه بعد یک خاصیت Enabled برای آیتم های TXCalendarAggregateEvents اضافه می کنم.

باز هم ممنون
من این خصوصیت را اضافه کردم و فایل با اجازه شما پیوست می کنم
لازم به ذکر است که من تنها ینوتی که در آن تغییرات اعمال شده است را ارسال نموده ام

vcldeveloper
شنبه 16 شهریور 1387, 17:53 عصر
من از یک چیز سر در نمیارم، این بنده خدا که پروژه را در SourceForge ثبت کرده، هر کدامتان می تونید راحت سورس را از آنجا بگیرید، تغییراتتان را اعمال کنید، و با یک هماهنگی کوچیک با ایشون، تغییراتتان را در Repository اعمال کنید تا همه استفاده کنند. پس چرا هر کدوم میاید یک پست میزنید و تغییراتتان در پست بصورت ضمیمه ارائه می کنید؟!!
اگر از Version Control ارائه شده استفاده کنید، هم کنترل تغییرات سورس راحتتر خواهد بود، هم کاربر بیچاره ایی که می خواد دانلود کنه، از یک جا دانلود میکنه، نه اینکه یک تاپیک چند صفحه ایی را زیر رو رو کنه و تغییرات افراد مختلف را - که سورسشان هم با هم هماهنگ نیست را - روی سورس اصلی اعمال کنه!

pad_kay
یک شنبه 17 شهریور 1387, 14:51 عصر
من از یک چیز سر در نمیارم، این بنده خدا که پروژه را در SourceForge ثبت کرده، هر کدامتان می تونید راحت سورس را از آنجا بگیرید، تغییراتتان را اعمال کنید، و با یک هماهنگی کوچیک با ایشون، تغییراتتان را در Repository اعمال کنید تا همه استفاده کنند. پس چرا هر کدوم میاید یک پست میزنید و تغییراتتان در پست بصورت ضمیمه ارائه می کنید؟!!

آقای علی کشاورز در مورد سخنان شما فکر کردم و به این نتیجه رسیدم که :
اصولا ایجاد و طرح سوال برای چی است ؟
اصولا ایجاد سایتهای به زبان مادری به چه منظور می باشد؟



اگر از Version Control ارائه شده استفاده کنید، هم کنترل تغییرات سورس راحتتر خواهد بود، هم کاربر بیچاره ایی که می خواد دانلود کنه، از یک جا دانلود میکنه، نه اینکه یک تاپیک چند صفحه ایی را زیر رو رو کنه و تغییرات افراد مختلف را - که سورسشان هم با هم هماهنگ نیست را - روی سورس اصلی اعمال کنه!

آیا بهتر نیست برای این منظور راه حل بهتری در نظر یگیرد
باتشکر

vcldeveloper
یک شنبه 17 شهریور 1387, 16:47 عصر
آقای علی کشاورز در مورد سخنان شما فکر کردم و به این نتیجه رسیدم که :
اصولا ایجاد و طرح سوال برای چی است ؟
اصولا ایجاد سایتهای به زبان مادری به چه منظور می باشد؟

شما برنامه را با زبان مادری می نویسید، یا با زبان دلفی؟! برای استفاده از Repository سایت SourceForge نیازی به دانستن زبان بیگانه، یا خواندن مطالب سایت بیگانه نیست، آدرس Repository پروژه مورد نظرتون را تایپ می کنید، آخرین نسخه سورس کد را بهتون میده. برای Upload کردن هم TortoiseSVN نصب می کنید، و با یک راست کلیک روی فایل سورس و کلیک روی SVN Commit سورس را به Repository ارسال می کنید.
اینطوری مدیر پروژه میدونه چه کسی، چه زمانی، چه تغییری در سورس داده. هر زمان هم که مشکلی پیش آمد، میتونه سورس را به حالت قبل برگردانه.
ما در سایت برنامه نویس مثل سایت SourceForge نرم افزار Version Control نصب شده روی سرور، برای نرم افزارهای ارائه شده توسط کاربران نداریم، که بخوایم به شما ارائه کنیم.
این سایت محل بحث هست، برای راحتی دانلود کنندگان، و فردی که مسئول پروژه هست، وقتی پروژه در SourceForge ثبت شده، بهترین کار آپدیت همون سورس کد از طریق SVN هست، نه کپی کد آپدیت شده در پست های تاپیک.


آیا بهتر نیست برای این منظور راه حل بهتری در نظر یگیرد
یعنی یک چیز جدیدی جایگزین Version Control اختراع کنیم؟! شما الان با سورس کدهاتون در پروژه چکار می کنید؟ همینطوری روی هارد ذخیره می کنید و هر وقت هم تغییری خواستید انجام بدید، تغییر را روی فایل قبلی اعمال می کنید؟ اگر هم پروژه گروهی بود، هر کسی فایلی که کار کرده را برای دیگران میفرسته و دیگران توی سیستمشان Copy\Paste می کنند؟! یا میرید یک نرم افزار Version Control روی سیستمتون نصب می کنید؟
برای اطلاعات بیشتر:
http://en.wikipedia.org/wiki/Version_Control

در ضمن، دوستان بیش از این بحث تاپیک را منحرف نکنید.

adgteq
جمعه 22 شهریور 1387, 05:40 صبح
سلام

لینک دریافت به روز شد.



شاید عده ای از دوستان کامپونت tms را نصب کرده باشند من با اجازه آقا/خانم adgteq تغییراتی در سورس دادم که در هنگام نصب error ندهد
حقیقتش من هم در نسخه 080825 کنترل های انتخاب تاریخ برای جلوگیری از این مشکل نام یونیت ها و کنترل های نصب شده را عوض کردم اما به دلیل کمبود وقت نتوانستم تست کنم و الان متوجه شدم که مشکل همنام بودن چند تا از کلاس ها باقی مانده بوده که در نسخه آپدیت شده رفع شد.



اگر امکان دارد در مورد نحوه خواندن و ست کردن TXCalendarEvents در TXCalPlannerCalendar توضیحاتی بیان فرمائیدکد مربوط به های لایت کردن رویدادها را در متد TXCalPlannerCalendar.PaintProc اضافه کرده ام. تابع CheckXCalEvent اضافه شده است که سه ارجاع به آن وجود دارد برای روزهای ماه قبل و روزهای ماه بعد و روزهای ماه فعلی. کد مربوط به افزودن Hint هم در انتهای متد TXCalPlannerCalendar.MouseMove قرار دارد. فیلد FEOL (از نوع TXCalEventOccurenceList) شامل رویداد های روز های نمایش داده شده هست که با تغییر ماه به روز رسانی می شود.



من این خصوصیت را اضافه کردم و فایل با اجازه شما پیوست می کنمدر نسخه آپدیت شده کنترل های انتخاب تاریخ قرار گرفت. بعدا در نسخه اصلیXCalendar هم اعمال خواهد شد.



اول اینکه اگر امکانش وجود داره (که البته به نظر کار چندان سختی نمیرسه) PlannerCalendarGroup هم به مجموعه افزوده شود.متاسفانه فعلا وقتش رو ندارم. باید اعتراف کنم که کنترل های TMS Planner را با عجله برای نشان دادن کارهایی که میشه با چیزی مثل XCalendar انجام داد منتشر کردم و بعضی از قسمت هاش رو هم حذف کردم.


دوم اینکه DatePicker ها را به صورت DateTimePicker خود دلفی که داری تاریخ پیش فرض و چک صحیح بودن تاریخ وارد شده و قابلیت های دیگر از جمله افزایش یا کاهش با دکمه های Up و Down و ... ولی با قوانین تاریخ شمسی به آن اضافه شود که داخل ComboBox خالی نباشد؛چون DateTimePicker دلفی یک wrapper برای یک کنترل ویندوز هست سورسش در دستم نیست. ولی فکر می کنم مثلا با استفاده از OnKeyDown و ... کنترل های انتخاب تاریخ TMS Planner و استفاده از متد های IncDay و IncMonth و IncYear تقویم مربوطه بتوانید افزایش و کاهش تاریخ را پیاده سازی کنید. البته قطعا اگر این جور امکانات در خود کنترل ها قرار داده شود بهتر است.


راهکار Mask چندان جالب به نظر نمیرسد، ضمن اینکه اجازه وارد کردن تاریخ نادرست را به کاربر میدهداحتمالا در نسخه اصلی کنترل ها هم همین مشکل وجود داشته باشد.



من از یک چیز سر در نمیارم، این بنده خدا که پروژه را در SourceForge ثبت کرده، هر کدامتان می تونید راحت سورس را از آنجا بگیرید، تغییراتتان را اعمال کنید، و با یک هماهنگی کوچیک با ایشون، تغییراتتان را در Repository اعمال کنید تا همه استفاده کنند. پس چرا هر کدوم میاید یک پست میزنید و تغییراتتان در پست بصورت ضمیمه ارائه می کنید؟!!
اگر از Version Control ارائه شده استفاده کنید، هم کنترل تغییرات سورس راحتتر خواهد بود، هم کاربر بیچاره ایی که می خواد دانلود کنه، از یک جا دانلود میکنه، نه اینکه یک تاپیک چند صفحه ایی را زیر رو رو کنه و تغییرات افراد مختلف را - که سورسشان هم با هم هماهنگ نیست را - روی سورس اصلی اعمال کنه!البته در SourceForge کنترل های سازگار شده با XCalendar را قرار نداده ام که بیشتر تغییرات انجام شده روی آنها بوده است. خودم هم تابه حال از Version Control و Repository استفاده نکرده ام و از نظر من البته با کسب اجازه از جناب علی کشاورز شاید همین طوری هم خیلی بد نباشه و ساده تر هست. نتیجه کار رو هم در همان پست اصلی به روز می کنیم.

adgteq
جمعه 29 شهریور 1387, 10:43 صبح
سلام

مشکل نمایش رویدادها در کنترلهای انتخاب تاریخ برطرف شد. (پست 19) می توانید نسخه به روز شده را از پست دوم دریافت کنید.


باید یک معذرت خواهی هم از seyed_farid بکنم چون کدی که برای انتخاب اتفاقات نوشته بودند درست بود. (پست 20)

seyed_farid
جمعه 29 شهریور 1387, 16:20 عصر
باید یک معذرت خواهی هم از seyed_farid بکنم چون کدی که برای انتخاب اتفاقات نوشته بودند درست بود. (پست 20)

خواهش میکنم.:قلب:
واقعاً دستتون درد نکنه . کامپوننتتون محشره:تشویق::تشویق::تشویق:

seyed_farid
سه شنبه 02 مهر 1387, 02:58 صبح
ضمناً يك مورد كوچك ديگه هم اينكه وقتي از روي كليد ماه به سال ميريم Hint درست كار نميكنه. اونهم فكر كنم چون چسبيده بهم هستند اين مشكل پيش مياد.

اگر بتونيد سه تقويم را همزمان تو هم نشون بديد، مثل تقويمهاي چاپي خيلي باحال ميشه.

rainstorm
شنبه 06 مهر 1387, 11:17 صبح
اگر بتونيد سه تقويم را همزمان تو هم نشون بديد، مثل تقويمهاي چاپي خيلي باحال ميشه.

اگه اينطوري بشه كه عالي ميشه
فكر نميكنم بيشتر از نيم ساعت كار داشته باشه
خواهشنا هر كدوم از دوستان كه اين كار رو بلد هستن انجام بدن و ورژن جديد رو براي بقيه آپلود كنن

vcldeveloper
شنبه 06 مهر 1387, 17:44 عصر
فكر نميكنم بيشتر از نيم ساعت كار داشته باشه
سورسش که آماده دانلود هست، اگر فقط نیم ساعت کار داره، شما شروع کنید. اگر هم نمیدونید چطور باید این کار انجام بشه، چطور حدس زدید که فقط نیم ساعت کار داره؟!!

adgteq
چهارشنبه 10 مهر 1387, 14:29 عصر
سلام


ضمناً يك مورد كوچك ديگه هم اينكه وقتي از روي كليد ماه به سال ميريم Hint درست كار نميكنه. اونهم فكر كنم چون چسبيده بهم هستند اين مشكل پيش مياد.اشکال برطرف شد. می توانید نسخه به روز شده را از پست دوم دریافت کنید. (فقط یونیت xcalPlannerCal.pas تغییر کرده است)



اگر بتونيد سه تقويم را همزمان تو هم نشون بديد، مثل تقويمهاي چاپي خيلي باحال ميشه.به نظر من کدنویسی این کار باید با سلیقه برنامه نویسی که به آن احتیاج داره انجام بشه. مثلا دموی IranEvents موجود در XCalendar همین کار رو انجام میده البته نه به شکل تقویم های چاپی. باید مقدار TDateTime هر روز قابل نمایش را توسط سه تقویم دیکود (یا فرمت) کرد. نتیجه رو هم میشه به طور دلخواه روی فرم نمایش داد یا در ابزار گزارش گیری استفاده کرد.



باز هم متشکرم که با نظراتتان نگارنده را دلگرم می کنید و ببخشید که دیر به دیر می توانم به اینجا سر بزنم.

seyed_farid
دوشنبه 22 مهر 1387, 00:01 صبح
دوست عزيز
من ميخوام با استفاده از ايونتها جدولي و فرمي بسازم و ايونتها رو توش ويرايش كنم و قابليت حذف هم داشته باشه.
ميتونيد منو راهنمائي كنيد؟

tik_tak
سه شنبه 30 مهر 1387, 10:11 صبح
با سلام
تقویمتون خیلی عالیه ممنون *
یه سوال داشتم
من میخوام تاریخ همون روز رو تو ماسک ادیتهایی که بالایه صفحه های برنامه م هست رو نشون بده
یعنی با چه دستوری مثلا اینجوری :


maskedit1.text:=?

مرسی

tik_tak
جمعه 03 آبان 1387, 12:25 عصر
کسی نمیدونه با چه دستوری تاریخ روز جاری یا روزی رو که دراون قرار داریم رو تو ادیت یا ماسک ادیت قرار بدیم؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

seyed_farid
شنبه 04 آبان 1387, 10:09 صبح
اول تقويمتو مشخص كن.(شمسي، قمري، ميلادي).
بعدش هم؛

XCalPlannerCalendar1.Date := Now ;
maskedit1.Text := (XCalPlannerCalendar1.DatesAsText);

tik_tak
یک شنبه 05 آبان 1387, 09:25 صبح
با سلاممن یه مشکلی داشتم اونم اینه که :من وقتی تو فرم 2 تا XCalPlannerMaskDatePicker و یه دونه PersianCalendar1وبعد میام خاصیت XCalender مربوط به این 2 تا XCalPlannerMaskDatePicker رو برابر ، PersianCalendar1 قرار میدم تا اینجا که هیچ مشکلی نیست تقویم تو این کمبوباکسا نشون داده میشه
ولی یه خطا::::::::::
اونم اینه که مثلا شما بیاید رو XCalPlannerMaskDatePicker اولی کلیک کنید بعد بیاید رو XCalPlannerMaskDatePicker دومی کلیک کنید اینجاست که این خطا میاد :
PROJECT
PROJECT1.EXE RAISED EXCEPTION CLASS ECONVERTERROR WITH MESSAGE '''IS NOT A VALID DAT'.PROCESS STOPPED .USE STEP OR RUN TO CONTINUE.

tik_tak
دوشنبه 06 آبان 1387, 16:43 عصر
با سلام
من یه مشکلی داشتم اونم اینه که :من وقتی تو فرم 2 تا XCalPlannerMaskDatePicker و یه دونه PersianCalendar1وبعد میام خاصیت XCalender مربوط به این 2 تا XCalPlannerMaskDatePicker رو برابر ، PersianCalendar1 قرار میدم تا اینجا که هیچ مشکلی نیست تقویم تو این کمبوباکسا نشون داده میشه
ولی یه خطا::::::::::
اونم اینه که مثلا شما بیاید رو XCalPlannerMaskDatePicker اولی کلیک کنید بعد بیاید رو XCalPlannerMaskDatePicker دومی کلیک کنید اینجاست که این خطا میاد :
PROJECT
PROJECT1.EXE RAISED EXCEPTION CLASS ECONVERTERROR WITH MESSAGE '''IS NOT A VALID DAT'.PROCESS STOPPED .USE STEP OR RUN TO CONTINUE.


در رابطه یا این مشکله به نظر خودم تنها راهش اینه که مااجازه ندیم کاربر تو محیط کمبوباکس یعنی اونجایی که تاریخ نمایش داده میشه و نوشته میشه کلیلک کنه و فقط کاربر با اون مثلث کنار کمبوباکس فقط بتوونه کار کنه و تاریخشو انتخاب کنه
چه جوری میتونم این کارو انجام بدم ؟؟؟؟؟؟
و
آیا
راه دیگه ای هست ؟؟؟؟؟؟
ممنون میشم یکی سریع جوابمو بده:ناراحت:
مرسی

adgteq
پنج شنبه 16 آبان 1387, 22:02 عصر
سلام


من ميخوام با استفاده از ايونتها جدولي و فرمي بسازم و ايونتها رو توش ويرايش كنم و قابليت حذف هم داشته باشه.فرض کنیم روی فرم یک ListBox برای نمایش لیست رویدادهای سالانه (lbEvents) یک Edit برای ورود عنوان رویداد (edtTitle) یک CheckBox برای انتخاب تعطیل بودن یا نبودن (cbVacation) یک ComboBox برای انتخاب نوع تقویمی که رویداد بر اساس آن محاسبه می شود (cboCalendar) و کنترل های دیگر برای پارامتر های لازم دیگر داشته باشیم. کد لازم برای دکمه های Add و Delete و Update می تواند شبیه کد زیر باشد:


procedure TForm1.btnAddClick(Sender: TObject);
begin
with XCalendarEvents1.Events.Add do
begin
Title := edtTitle.Text;
IsVacation := cbVacation.Checked;

case cboCalendar.ItemIndex of
0: XCalendar := PersianCalendar1;
1: XCalendar := HijriCalendar1;
2: XCalendar := GregorianCalendar1;
end;

case rgRuleType.ItemIndex of
0: // Exact day
begin
Month := StrToInt(edtMonth.Text);
Day := StrToInt(edtDay.Text);
end;
1: // Nth Day-of-week in month
begin
Nth := ...
DayOfWeek := ...
Month := ...
end;
...
end;

...

end;
end;

procedure TForm1.btnDeleteClick(Sender: TObject);
begin
XCalendarEvents1.Events.Delete(lbEvents.ItemIndex) ;
end;

procedure TForm1.btnUpdateClick(Sender: TObject);
begin
with XCalendarEvents1.Events[lbEvents.ItemIndex] do
begin
Title := edtTitle.Text;
IsVacation := cbVacation.Checked;

... // Just like the code for btnAddClick

end;
end;
البته باید یک مقدار کد هم برای به روز رسانی کنترلها نوشت.



من میخوام تاریخ همون روز رو تو ماسک ادیتهایی که بالایه صفحه های برنامه م هست رو نشون بدههمانطور که می دانید مقدار TDateTime روز جاری را در دلفی می توان با تابع Date بدست آورد (یا اگر همراه با زمان جاری می خواهید با تابع Now). با استفاده از XCalendar هم که تمام امکاناتی که در دلفی برای تقویم میلادی موجود است بطور عمومی برای تقویمهای مختلف پیاده سازی شده قابل دسترسی هست. (پست سیزدهم را ببینید) مثلا می توانید از متد DateToStr استفاده کنید:


maskedit1.text := PersianCalendar1.DateToStr(Date);
در ضمن برای محاسبات تقویمی هیچ نیازی به استفاده از کنترل های انتخاب تاریخ نیست. آن کنترل ها خود از امکانات کامپوننت های تقویم استفاده می کنند.




مثلا شما بیاید رو XCalPlannerMaskDatePicker اولی کلیک کنید بعد بیاید رو XCalPlannerMaskDatePicker دومی کلیک کنید اینجاست که این خطا میاداین خطا فقط هنگام debug برنامه تحت دلفی نمایش داده می شود و فکر می کنم در نسخه اصلی کنترل ها هم این مشکل وجود داشته. با غیر فعال کردن Stop on Delphi Exceptions (یا Notify on language exceptions) در Debugger Options می شود از نمایش این پیغام جلوگیری کرد.

tik_tak
چهارشنبه 29 آبان 1387, 09:10 صبح
با غیر فعال کردن Stop on Delphi Exceptions (یا Notify on language exceptions) در Debugger Options


میشه بگید اینی که گفتید کجاست ؟ یه مقدار توضیح بدید ممنونم میشم
با تشکر

adgteq
پنج شنبه 07 آذر 1387, 18:55 عصر
در تنظیمات دلفی می توانید این گزینه را پیدا کنید. مثلا در دلفی 7 در منوی Tools->Debugger Options تب Language Exceptions با غیر فعال کردن گزینه Stop on Delphi Exceptions اگر هنگام اجرای برنامه تحت دلفی خطایی پیش بیاید دلفی اجرای برنامه را قطع نمی کند. اما در صورت فعال بودن این گزینه، دلفی با بروز هر exception حتی اگر با try...except هم handle شده باشد (مثل مشکل مورد بحث) اجرای برنامه را قطع می کند.

vb_nima
یک شنبه 10 آذر 1387, 01:53 صبح
آقای adgteq خیلی ممنون از زحماتتون.
من یک مشکلی پیدا کردم وقتی از بعضی فرمام خارج میشم یک همچین پیغام خطایی داده میشه.


Projecet daroukhane.exe raised exception class EAccessViolation with message 'Access violation at address 00405934 in module 'daroukhane.exe'. Read of address 000008FC'. Proceess stopped. Use Step or Run to continue

و پس از Ok کردن به این قسمت از کد xcalDB پرش میکنه و به inherited اشاره میشه.:



destructor TXcalDateTimeField.Destroy;
begin
if Assigned(FXCalendar) then
FXCalendar.RemoveNotify(XCalendarSettingsChanged);

inherited;
end;

لطفا راهنماییم کنید چه کار کنم که این خطا داده نشه؟
ممنونم.

vb_nima
دوشنبه 11 آذر 1387, 00:19 صبح
لطفا کمک کنید. هیچکدوم از دوستان این مشکل که من گفتم براشون پیش نیومده؟ اینم یادم رفته بود بگم نسخه دلفیم 7 .

adgteq
چهارشنبه 20 خرداد 1388, 11:44 صبح
سلام

نسخه 1.1.0 با پشتیبانی از دلفی 2009 (و رشته های یونیکد) و رفع مشکل پیش آمده برای vb_nima عزیز رو میتونید از لینک موجود در پست اول دانلود کنید. بابت تاخیر پیش آمده عذرخواهی میکنم.
توجه: کنترلهای انتخاب تاریخ در این مجموعه موجود نیست.

devilsh2003
سه شنبه 30 تیر 1388, 12:25 عصر
با عرض سلام و خسته نباشید خدمت دوستان عزیز...
من با یه مشکل نسبتا اساسی برخورد کردم. اونم اینکه تقویم قمری مشکل داره. مثلا 30 صفر توی سال 88 نداریم . و این نمونه ها برای اعلام تعطیلات مشکل درست می کنه .

saleh_fartash
سه شنبه 30 تیر 1388, 12:36 عصر
سلام
من اگر بخوام یک لیست از تاریخ ها رو بدم و تقویم اونها رو برای من پر رنگ کنه و با کلیک روی آنها متنی رو نمایش بده چه باید بکنم.
مانند یادآوری در گوشی هی موبایل

adgteq
جمعه 02 مرداد 1388, 16:24 عصر
سلام


من با یه مشکل نسبتا اساسی برخورد کردم. اونم اینکه تقویم قمری مشکل داره. مثلا 30 صفر توی سال 88 نداریم . و این نمونه ها برای اعلام تعطیلات مشکل درست می کنه .

همانطور که می دانید طول ماههای قمری بر اساس مشاهده هلال ماه بدست می آید. در XCalendar برای تنظیم طول ماههای تقویم قمری، باید از رویداد OnGetDaysInAMonth کامپوننت تقویم استفاده کنید و پارامتر NDays را بر حسب سال و ماه مقداردهی کنید. در غیر این صورت طولهای قراردادی ماهها در نظر گرفته می شود. اگر می خواهید سالهای کبیسه قمری را نیز مشخص کنید باید از کامپوننت TObservedHijriCalendar و رویداد OnFindLeapYears آن استفاده کنید. در غیر این صورت سالهای کبیسه قراردادی با دوره 30 ساله در نظر گرفته خواهد شد. در دموی IranEvents این کار انجام شده.


من اگر بخوام یک لیست از تاریخ ها رو بدم و تقویم اونها رو برای من پر رنگ کنه و با کلیک روی آنها متنی رو نمایش بده چه باید بکنم.

کنترل PlannerCalendar یک خاصیت Events دارد که یک Collection هست و می توانید لیست تاریخ های مورد نظرتان را در آن ایجاد کنید. مثلا کد زیر یک تاریخ نمونه را اضافه می کند:


with XCalPlannerCalendar1.Events.Add do
begin
Date := PersianCalendar1.EncodeDate(1388, 5, 2);
Hint := 'The Hint';
Shape := evsNone;
FontColor := clFuchsia;
end;
برای تشخیص کلیک هم می توانید از رویداد OnDayChange استفاده کنید:


procedure TForm1.XCalPlannerCalendar1DayChange(Sender: TObject; origDate, newDate: TDateTime);
begin
if newDate = PersianCalendar1.EncodeDate(1388, 5, 2) then
ShowMessage('The Message');
end;

devilsh2003
یک شنبه 04 مرداد 1388, 10:14 صبح
از جواب شما ممنون ولی اگر مطلع باشید تقویم قمری یکی از دقیق ترین هاست و نوع محاسبه آن ربطی به دیدن ماه توی آسمان نداره (البته به غیر از ایران و قوانین خاص خودش)........ و من متوجه شدم نحوه محاسبه تقویم های چاپ شده ایرانی که مشکل داره ..

adgteq
سه شنبه 06 مرداد 1388, 00:03 صبح
سلام

من هم از توجه شما ممنونم. اما تا جایی که من اطلاع دارم تقویم قمری مورد استفاده در کلیه کشورهای اسلامی بر مبنای رؤیت هلال ماه استوار است و ایجاد اختلاف به دلیل تفاوت فتاوی علما در مواردی مانند جایز بودن رؤیت با چشم مسلح، قابل قبول بودن محاسبات نجومی که رؤیت‌پذیری یا عدم رؤیت‌پذیری را در صورت صاف بودن هوا پیش بینی می کنند، امکان ارجاع به رؤیت هلال در مناطق دیگر و ... می باشد.
در مورد ایران هم حدودا از سال 80 استخراج تقویم کشور بر عهده مرکز تقویم مؤسسه ژئوفیزیک دانشگاه تهران گذاشته شده است که پیش از پایان خرداد هر سال تقویم سال آینده را تنظیم می کند. احتمالا طول ماههای قمری با مقایسه مشخصه های نجومی ماه در آغاز هر ماه با رکوردهای رؤیت هلال گذشته، در نقاط مختلف کشور استخراج می شود.
در هر صورت با توجه به نکات گفته شده و همچنین تغییرات بعدی طول ماهها بخصوص ماه رمضان و ماههای قبل و بعد از آن، ضرورت وجود روشی برای تنظیم تقویم اجتناب ناپذیر به نظر می رسد.

ehsan_ei
جمعه 06 فروردین 1389, 01:37 صبح
سلام دوست عزیز:
من یه تازه کارم و در این پروژه ای که دارم مینویسم باید کاربر تاریخ شمسی رو وارد کنه و قبل از ذخیره توی دیتا بیس(SQL) به میلادی تبدیل بشه و برعکس، وقتی کاربر میخواد اطلاعات داخل dbرو ببینه باید قمری ثبدیل به شمسی بشه. من طبق فایل install این کامپوننت شما رو نصب کردم اما نمیدونم برای این منظور که گفتم چه جوری ازش استفاده کنم!!:عصبانی++: اگه ممکنه برام توضیح بدین.:خجالت:
با تشکر.:بوس:

ehsan_ei
شنبه 07 فروردین 1389, 19:19 عصر
دوستان:
توی این سایت این همه برنامه نویس خبره هست! یعنی واقعا کسی نیست که به داد من برسه:متعجب:!!!!!!!!!!!
خیلی حیاتییه :گریه:
شمارو خدا کمک کنین:عصبانی++:

alamdar_761
پنج شنبه 06 خرداد 1389, 17:39 عصر
مجموعه کامل XCalendar 1.1.1 همراه با کنترلهای TMS Planner سازگار شده با آن را به این پست اتچ کرده ام. پکیج های لازم برای نصب رو هم اضافه کرده ام (با تشکر از مهران). البته متاسفانه روی دلفی 2009 قابل نصب نیست.

اگر امکان داره این کامپوننت را همراه با کنترلهای TMS Planner سازگار شده برای دلفی 2010 بگزارید یا راحلی را نشان دهید که این کامپوننت را با Tms planner برای دلفی 2010 استفاده کنم

یا علی

alamdar_761
شنبه 08 خرداد 1389, 08:30 صبح
یعنی توی این سایت با این هم کاربر کسی نیست به داد این تاپیک برسه

vcldeveloper
شنبه 08 خرداد 1389, 14:05 عصر
یعنی توی این سایت با این هم کاربر کسی نیست به داد این تاپیک برسه
کسی نیست که وقت آزاد داشته باشه، و برای شما آن کامپوننت را برای استفاده از TMS Planner در دلفی 2010 به روز کنه.

شما خودتون می تونید دست به کار بشید. کاربر مربوطه زحمت کشید و آن را تا اینجا نوشت، و به طور آزاد در اختیار دیگران قرار داد. شما اگر بهش نیاز دارید، می تونید خودتان آن را به روز کنید، و آن را به طور آزاد با سایر کاربران به اشتراک بزارید.

alamdar_761
شنبه 08 خرداد 1389, 16:36 عصر
کسی نیست که وقت آزاد داشته باشه، و برای شما آن کامپوننت را برای استفاده از TMS Planner در دلفی 2010 به روز کنه.

شما خودتون می تونید دست به کار بشید. کاربر مربوطه زحمت کشید و آن را تا اینجا نوشت، و به طور آزاد در اختیار دیگران قرار داد. شما اگر بهش نیاز دارید، می تونید خودتان آن را به روز کنید، و آن را به طور آزاد با سایر کاربران به اشتراک بزارید.

واقعا ممنون از جوابتون!
خب بازم شکر یکی جوابمونو داد از بلاتکلیفی در اومدیم
امیدوارم حداقل یک راهنمایی کوچیک برای آپدیت کامپوننت کنید

golbafan
شنبه 27 شهریور 1389, 20:11 عصر
بيا باباجان اينم سورس تغيير يافتش...

مائده 100
چهارشنبه 17 آذر 1389, 11:30 صبح
بيا باباجان اينم سورس تغيير يافتش...

با سلام اينكه با 2010 سازگار نيست كسي مي تونه با 2010 سازگارش كنه مرسي به داد ما تازه كارا هم برسيد

مائده 100
شنبه 20 آذر 1389, 12:50 عصر
با سلام من اين كامپونت رو تو دلفي 7 نتونستم نصب كنم يعني موقع كامپايل ارور ميدهprocedure TListHintWindow.CreateParams(var Params: TCreateParams);
خواستم يك پكيج تو 2010 هم درست كنم كه باز ارور كامپيال ميده اگه ميتونه منو راهنمايي كنه ممنون مي شم

مائده 100
یک شنبه 21 آذر 1389, 15:25 عصر
با سلام من اين كامپونت رو تو دلفي 7 نتونستم نصب كنم يعني موقع كامپايل ارور ميدهprocedure TListHintWindow.CreateParams(var Params: TCreateParams);
خواستم يك پكيج تو 2010 هم درست كنم كه باز ارور كامپيال ميده اگه ميتونه منو راهنمايي كنه ممنون مي شم
سلام كسي نيست راهنمائي كنه:ناراحت::متفکر:

MOJTABAATEFEH
دوشنبه 22 آذر 1389, 20:24 عصر
با دابل کلیک روی کامپوننت نمیشه رویداد ها رو تغییر داد باید چطور عمل کرد؟

با تشکر

golbafan
پنج شنبه 02 دی 1389, 07:14 صبح
من کام÷وننت رو برای d2007 تغییر دادم و سورس هم گذاشتم

اگر روزی قرار شد از d2010 و غیره استفاده کنم بازم تغییرش میدم

ولی تا اون موقع خودتون دست بکار بشین

روش تغییر دادنش همینطوره که من تغییر دادم

Modernidea
جمعه 13 اسفند 1389, 01:23 صبح
بيا باباجان اينم سورس تغيير يافتش...

یک لطفی میکنید یک توضیح کوچیک بدید که چطوری باید تغییر سورس داد؟

ahmadbh
چهارشنبه 01 تیر 1390, 19:52 عصر
با سلام
من تازه كارم و ميخوام كه يك مقدار عددي را به يك تاريخ اضافه يا كم كنم
مثلا 7 روز به تاريخ اضافه كنم يا 35 روز كم كنم
لطفا اگر سورسي براي من بگذاريد ممنون ميشوم با دلفي 7
با تشكر

MOJTABAATEFEH
دوشنبه 04 مهر 1390, 14:56 عصر
سلام
دوستان عزیز نسخه سازگار با دلفی 2010 وجود داره؟

با تشکر

MOJTABAATEFEH
سه شنبه 05 مهر 1390, 18:06 عصر
از دوستانی که با این کامپوننت کار کردن کسی از اینکه برای دلفی 2010 هم بروز شده اطلاعی داره؟
یا درصورت امکان راجع بروزرسانی کامپوننت ها و خصوصا الان این کامپوننت توضیحی بده؟

با تشکر

adelmobasheri
شنبه 16 مهر 1390, 08:21 صبح
سلام
لطفا برای نسخه delphi XE2 هم ارائه بدید.
حین compile در XE2 پیغامهای خطایی از جمله :

[DCC Error] xcalAdvEdit.pas(139): E2065 Unsatisfied forward or external declaration: 'TListHintWindow.WMNCButtonDown'

را می دهد.

MOJTABAATEFEH
شنبه 16 مهر 1390, 09:44 صبح
توی 2010 هم همین پیغام خطا رو میده
دوست عزیزی که زحمت استارت این کار رو کشیدن لطفا در خصوص این تغییرات هم توضیحی بفرمایند یا هر کدام از دوستان که اطلاعی دارند خصوصا مدیر بخش

با تشکر

MOJTABAATEFEH
شنبه 07 آبان 1390, 20:52 عصر
دوستان عزیز برای دریافت نسخه هماهنگ با 2010 به صفحه زیر بروید
http://barnamenevis.org/showthread.php?308651-%D9%85%D8%AC%D9%85%D9%88%D8%B9%D9%87-%D8%AA%D9%82%D9%88%DB%8C%D9%85-%D9%81%D8%A7%D8%B1%D8%B3%DB%8C-XCalendar-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%AF%D9%84%D9%81%DB%8C-2010-%D9%88-XE&p=1355069#post1355069

seyed_farid
پنج شنبه 29 دی 1390, 00:26 صبح
با سلام
این کومپوننت روز اول سال قمری جاری 1433 را مشکل داره و تاریخ رو یک روز بیشتر نشون میده.:ناراحت:
تا آخرین روز سال 1432 خوبه ولی سال جدید رو مشکل داره. چطور میشه حلش کرد:تشویق:
در حقیقت یکشنبه باید اول محرم باشد. در ماه ذیحجه درست است اما در محرم (تصویر پائین) اشتباه است.

hadisalahi2
شنبه 06 مهر 1392, 09:25 صبح
آره داداش
من هم همین مشکل رو باهاش دارم
امیدوارم یک نفر که در این زمینه آشنایی داره ، در مورد رفع این ایراد راهنمایی کنه

golbafan
پنج شنبه 11 مهر 1392, 00:55 صبح
از hijricalendar استفاده کنید و مقدار hijriadjustment رو تغییر بدین

111419

hadisalahi2
پنج شنبه 11 مهر 1392, 08:50 صبح
چه تغییری باید بدم ؟
مثلا اگه صفر هستش من بدم 1؟

hamedjim
دوشنبه 09 شهریور 1394, 20:57 عصر
سلام.
کسی می‌دونه چطور باید کاری کرد در یک XCalPlannerCalendar که ویژگی XCalendar اون به یک PersianCalendar نسبت داده شده، مناسبت‌های قمری رو هم به او اضافه کرد؟

مثلا همون‌طور که در عکس زیر می بینید، روزهایی که مناسبت شمسی دارند، بولد شدند و در بین اونها روزهایی که تعطیل رسمی هستند، قرمز رنگ میشند. حالا من نیاز دارم مناسبت‌های قمری هم به همین شکل در بیان. یعنی 20 مرداد (25 شوال) که شهادت هست و یک روز تعطیل، باید قرمز رنگ بشه.

134800

البته لازم به ذکره من از کدی آقای گلبافان در نمونه برنامه‌شون گذاشته بودند، مناسبت‌ها رو فراخوانی می‌کنم و همون‌طور که می‌بینید، این روز به عنوان یک وکیشن (روز تعطیل) تعیین شده:


<Event Month="10" Day="25" XCalendar="HijriCalendar" Title="شهادت حضرت امام جعفر صادق عليه السلام، 148 هـ ق" IsVacation="1"/>

hamedjim
یک شنبه 29 شهریور 1394, 23:17 عصر
کسی می‌دونه چطور باید کاری کرد در یک XCalPlannerCalendar که ویژگی XCalendar اون به یک PersianCalendar نسبت داده شده، مناسبت‌های قمری رو هم به او اضافه کرد؟


این مشکل رو با اختصاص یک XCalendarEvents که با فایل زیر لود شده حل کردم. فایل xml زیر ترکیب تمام رویدادهای شمسی و میلادی و قمری با در نظر گرفتن روزهای تعطیل هست:

135354