صفحه 1 از 2 12 آخرآخر
نمایش نتایج 1 تا 40 از 66

نام تاپیک: دانلود کنید: کامپوننت DatePicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه با سورس)

  1. #1

    دانلود کنید: کامپوننت DatePicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه با سورس)

    سلام.
    3، 4 روز روی ساخت یه کامپوننت DatePicker کار کردم که نتیجه رو همراه سورس اینجا قرار دادم.



    اگه کمبودی داره دیگه زحمتش با خودتون. کمبودهاشو رفع کنید و نتیجه رو مجددا بزارید اینجا که بقیه هم استفاده کنن. (البته تا جایی که امکان داشت سعی کردم مشکلی نداشته باشه، حالا ممکنه بعضی موارد از دستم در رفته باشه)
    قبلش لازمه که یه توضیح در مورد این DatePicker بدم

    1. همونطوری که گفتم، این کامپونت قابلیت اینو داره که مناسبتهای تقویم قمری و شمسی رو نشون بده و تعطیلات رو هم از روزهای غیر تعطیل متمایز کنه. مثلا با بردن موس روی تاریخ 1392/01/05 مناسبتهای این روز تو قسمت پایین این کامپوننت نمایش داده میشه



    در مورد تاریخ شمسی هیچ مشکلی وجود نداشت. شما هر تاریخ میلادی رو بدون دردسر و از طریق کلاس PersianCalendar میتونید تبدیل به تاریخ شمسی کنید.
    اما در مورد تقویم قمری و کلاس HijriCalendar به این راحتی ها نیست. یعنی چی؟
    یعنی اینکه ممکنه شما تاریخ میلادی رو تبدیل کنید به تاریخ قمری ولی وقتی نتیجه رو با تقویم مقایسه میکنید نتیجه 1 تا نهایتا 2 روز با اون چیزی که از طریق کلاس HijriCalendar به دست اومده ممکنه متفاوت باشه!! چرا اینجوریه؟
    عرب هستن دیگه. حساب کتاب نداره که کاراشون. میگن آقا ما چیزی رو قبول نداریم الا اینکه اون چیز رو با چشم ببینیم. مثلا میگن
    مطابق حکم شرعی اگر هلال ماه در شامگاه بیست‌ونهم ماه رؤیت شود، آن ماه به پایان رسیده و فردا اول ماه بعد است؛ ولی اگر هلال ماه در شامگاه روز بیست‌ونهم رویت نشد، ماه ۳۰ روزه می‌شود
    و اینجوری میشه که خیلی ها میان تاپیک میزنن که آقا چرا تو این نوع تبدیل کلاس HijriCalendar یا vs باگ داره.
    باگی نیست. اعراب محترم 2 نوع تقویم دارن. تقویم هلالی و تقویم قراردادی. (تو همه کاراشون ار تقویم هلالی استفاده میکنن) تقویم قراردادی قمری مثل تقویم میلادی یا شمسی یه قاعده ثابت داره و از طریق همون کلاس HijriCalendar به دست میاد. ولی برای رفع خطای 1 یا 2 روزه تقویم هلالی، تو کلاس HijriCalendar یه پراپرتی
    قرار دادن به اسم HijriAdjustment که تو رنج -2 تا 2 مقدار میگیره.
    بعضی ها گفتن ما این مقدار رو هم set میکنیم ولی بازم تو ماه یا ماههای بعد مناسبتهای تقویم قمری با تقویم شمسی جور در نمیاد. موضوع اینجاس که هر ماه قمری HijriAdjustment مخصوص به خودش رو داره. شما نمیتونید از یک مقدار HijriAdjustment برای کل سال قمری استفاده کنید. مثلا ممکنه برای محرم این مقدار -1 باشه و برای صفر -2
    در مورد تقویم قمری هلالی و قراردادی هم این لینک رو مطالعه کنید بد نیست

    2. مشکل تو تاریخ قمری فقط گزینه 1 نیست. مشکل بعدی اینه که فرضا شما برای سال 1392 شمسی میاید و HijriAdjustment مورد نیاز رو واسه ماههای قمری تو این سال ست میکنید. با تموم شدن سال 1392 دیگه این HijriAdjustment ها برای سال 93 و سالهای بعدی (یا قبلی، چون تو DatePicker مطمئنا قابلیت انتخاب سال هم وجود داره) اعتبار نداره و مجددا باید مقادیر HijriAdjustment رو از روی تقویم برای سال جدید پیدا کنید و ست کنید. این همون کاریه که اکثر نرم افزارهایی که با تقویم قمری کار میکنن انجام میدن. یعنی آخر سال میان یه فایل اصلاح کننده HijriAdjustment برای سال جدید میدن به یوزرها. این فایل میتونه یه txt یا xml باشه و کاری که یوزر باید انجام بده جایگزین کردن این فایل با فایل قبلی هستش. من هم تو ین کامپوننت از یه فایل xml به اسم
    HijriCalendarPatch.xml استفاده کردم که مناسبتهای تقویم قمری رو برای سال شمسی مورد نظر ست میکنه. مشخصه که اگه سال دیگه ای جز سالی که HijriAdjustment برای اون ست شده، توسط DataPicker مشاهده بشه، مناسبتهای سال قمری یکی دو روز اینور اونور میشه نسبت به تقویم اصلی.
    کافیه واسه سال شمسی جدید این فایل رو با notepad باز کنید و مقادیر رو برای هر ماه اصلاح کنید. دقت کنید که فرمت باید به شکل زیر باشه و فقط مقادیر اصلاح بشن. در غیر این صورت مناسبتهای تقویم قمری اصلا درنظر گرفته نمیشن.
    کد HTML:
    <?xml version="1.0" encoding="utf-8" ?>
    <months>
      <month key="1" value="-1" />       <!--محرم-->
      <month key="2" value="0" />        <!--صفر-->
      <month key="3" value="-1" />        <!--ربیع الاول-->
      <month key="4" value="0" />        <!--ربیع الثانی-->
      <month key="5" value="-1" />       <!--جمادی الاول-->
      <month key="6" value="-1" />       <!--جمادی الثانی-->
      <month key="7" value="-2" />       <!--رجب-->
      <month key="8" value="-1" />       <!--شعبان-->
      <month key="9" value="-2" />       <!--رمضان-->
      <month key="10" value="-2" />      <!--شوال-->
      <month key="11" value="-2" />      <!--ذیقعده-->
      <month key="12" value="-2" />      <!--ذالحجه-->
    </months>
    3. اما نحوه ست کردن value ها تو فایل HijriCalendarPatch.xml برای ماههای قمری و برای ست شدن مناسبتها با سال شمسی مورد نظر
    مواد مورد نیاز: یک عدد تقویم سال شمسی مورد نظر (مثلا تقویم سال 1392 که تو فایل ضمیمه قرار دادم)
    و 5 الی 10 دقیقه وقت و حوصله. و اما نحوه کار
    تو ماه فروردین سال 1392 (اولین ماه تقویم شمسی) از روی تقویمی که دارید، یکی از مناسبتهای مربوط به تاریخ قمری رو پیدا کنید (البته ممکنه مثلا از نیمه فروردین ماه، ماه قمری تغییر کنه که به این نکته هم توجه داشته باشید) بعد ببینید معادل تاریخ شمسی اون مناسبت چه تاریخی هستش (مثلا 13 جمادی الاول که شهادت حضرت فاطمه (س) به روایتی هستش، میشه معادل 5 فروردین 1392 (اگه بدون HijriAdjustment این تاریخ رو به دست بیارید میشه 4 فروردین). خوب چون مناسبت متعلق یه ماه جمادی الاول هستش (ماه 5 از تقویم قمری) پس یعنی میخوایم مقدار value رو برای خط زیر تو فایل HijriCalendarPatch.xml به دست بیاریم (فرض میکنیم دیفالت همه value ها تو فایل HijriCalendarPatch.xml برابر 0 هستش)
    کد HTML:
    <month key="5" value="-1" />       <!--جمادی الاول-->
    یه کامپوننت DatePicker رو فرم قرار میدیم و برنامه رو اجرا میکنیم. DatePicker رو باز میکنیم و موس رو میبریم رو 5 فروردین 1392. نگاه میکنیم اگه پایین کامپوننت مناسبت مورد نظر ظاهر شد که یعنی مناسبتهای ماه جمادی الاول برای سال شمسی 1392 با همون HijriAdjustment دیفالت (یعنی 0) ست میشه و نیازی به تغییر value برای این ماه نیست. ولی اگه مناسبت مورد نظر ظاهر نشد، موس رو تو رنج 1392/01/03 الی 1392/01/07 حرکت میدیم تا اون مناسبت رو پیدا کنیم (2 روز کمتر یا بیشتر) مثلا اگه مناسبت افتاده بود رو تاریخ 1392/01/04 این یعنی اینکه تاریخ قمری برای ماه جمادی الاول تو سال 1392 باید 1 روز بره جلوترتا بیافته رو 5 فروردین. برای جلو بردنش هم از مقدار -1 استفاده میکنیم (1- یک رو جلو میره -2 دو رو جلو میره. 0 بدون تغییر و 1 و 2 هم به ترتیب 1و2 روز به عقب میره).
    برای باقی ماههای قمری هم به همن صورت عمل میکنیم.
    فایل HijriCalendarPatch.xml که همراه پروژه هستش و محتواش رو هم بالا قرار دادم، برای سال 92 تنظیم شده.
    این فایل باید کنار exe برنامه باشه

    4. برنامه همه مناسبتهای تقویم شمسی و قمری رو از فایل DayEvents.xml که تو Resources این کامپوننت قرار گرفته میخونه. قالب این فایل به این صورت هستش

    کد HTML:
    <?xml version="1.0" encoding="utf-8" ?>
    <calendars>
      <calendar name="Persian">
        <day month="1" day="1" isHoliday="1" event="روز اول عید نوروز" />
        <day month="1" day="2" isHoliday="1" event="روز دوم عید نوروز - آغاز عملیات فتح المبین" />
        <day month="1" day="2" isHoliday="1" event="هجوم ماموران ستم شاهی به مدرسه فیضیه قم" />
      </calendar>
      <calendar name="Hijri">
        <day month="1" day="1" isHoliday="0" event="آغاز سال جدید هجری قمری" />
        <day month="1" day="9" isHoliday="1" event="تاسوعای حسینی" />
        <day month="1" day="10" isHoliday="1" event="عاشورای حسینی" />
        <day month="1" day="12" isHoliday="0" event="شهادت حضرت امام زین العابدین علیه السلام" />
        <day month="1" day="25" isHoliday="0" event="شهادت حضرت امام زین العابدین علیه السلام به روایتی" />
        <day month="2" day="7" isHoliday="0" event="ولادت حضرت امام موسی کاظم علیه السلام" />
      </calendar>
    </calendars>
    البته این واسه نمونه هستش و فایل اصلی اکثر مناسبتها توش قرار داره. اگه خواستید مناسبتهای دیگه رو بهش اضافه کنید، دقت کنید که مناسبتهای تقویم شمسی تو بخش اول و مناسبتهای تقویم قمری تو بخش دوم درج بشه. تو بخش اول منظور از month ماه شمسی و تو بخش دوم ماه قمری هستش.

    5. کلاس FarsiDateHelper هم شامل یه سری توابع کمکی هست که میتونید از اونها هم تو پروژه خودتون استفاده کنید

    پروژه ضمیمه شده هم شامل سورس کامپوننت و هم یه برنامه برای تست کامپوننت هستش. با vs 2012 نوشته شده. تو ورژنهای پایین تر هر پروژه رو به صورت جداگانه و از طریق فایل csproj. اجرا کنید

    موفق باشید
    آخرین ویرایش به وسیله Himalaya : شنبه 14 اردیبهشت 1398 در 08:06 صبح

  2. #2
    کاربر دائمی
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran
    پست
    776

    نقل قول: دانلود کنید: کامپوننت DataPicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه ب

    HijriCalendarPatch.xml استفاده کردم که مناسبتهای تقویم قمری رو برای سال شمسی مورد نظر ست میکنه. مشخصه که اگه سال دیگه ای جز سالی که HijriAdjustment برای اون ست شده، توسط DataPicker مشاهده بشه، مناسبتهای سال قمری یکی دو روز اینور اونور میشه نسبت به تقویم اصلی.
    کا
    سلام
    با تشکر از شما
    با توجه به نقل قول بالا بهتر نیست که از یک فایل برای سالهای متمادی استفاده بشه ؟ یعنی فایل xml بجز ماهها شامل سال ها هم باشه ؟

  3. #3

    نقل قول: دانلود کنید: کامپوننت DataPicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه ب

    سلام

    با توجه به نقل قول بالا بهتر نیست که از یک فایل برای سالهای متمادی استفاده
    بشه ؟ یعنی فایل xml بجز ماهها شامل سال ها هم باشه ؟
    وقتی میشه این کار رو کرد که دقیقا بدونیم مناسبتهای تقویم قمری تو سالهای شمسی بعدی (و قبلی، که البته سالهای قبل رو از روی تقویم های موجود میشه بدست آورد)، دقیقا (و نه با حدس و محاسبات احتمالی) تو چه روزی میافته. چون تقویم سال 1392 همراه با مناسبتهای قمری موجود هستش، خوب این کار واسه سال 92 و سالهای قبل شدنی هستش. ولی اگه این تقویم موجود نباشه باید منتظر موند. (منظورم موجود بودن تقویم قمری نیست. این تقویم رو که تا هر سالی بخوایم میتونیم از رو کلاس HijriCalendar به دست بیاریم. منظورم تقویم رسمی و دقیقی هست که دقیقا مشخص کنه روز x از ماه y تو سال z شمسی دقیقا معادل چه روزی از تقویم قمری هستش. و چون مناسبتها مربوط به تقویم قمری هلالی هستن، حتی در مورد آخر همین ماه قمری که الان توش هستیم هم با قطعیت نمیشه حرف زد چه برسه به آخر سال یا سالهای بعد. ما با اون فایل xml اومدیم معادل تقویم رسمی سال 92 که الان موجوده ایجاد کردیم، حتی ممکنه این تقویم هم مثلا تو محاسبه روز عید فطر اشتباه باشه، با این حال فرض بر این هستش که درست باشه (مگه خلافش ثابت بشه، که اونوقت باید HijriAdjustment ماه مورد نظر مجددا تغییر کنه))

  4. #4
    کاربر دائمی
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran
    پست
    776

    نقل قول: دانلود کنید: کامپوننت DataPicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه ب

    نقل قول نوشته شده توسط karaji333 مشاهده تاپیک
    سلام



    وقتی میشه این کار رو کرد که دقیقا بدونیم مناسبتهای تقویم قمری تو سالهای شمسی بعدی (و قبلی، که البته سالهای قبل رو از روی تقویم های موجود میشه بدست آورد)، دقیقا (و نه با حدس و محاسبات احتمالی) تو چه روزی میافته. چون تقویم سال 1392 همراه با مناسبتهای قمری موجود هستش، خوب این کار واسه سال 92 و سالهای قبل شدنی هستش. ولی اگه این تقویم موجود نباشه باید منتظر موند. (منظورم موجود بودن تقویم قمری نیست. این تقویم رو که تا هر سالی بخوایم میتونیم از رو کلاس HijriCalendar به دست بیاریم. منظورم تقویم رسمی و دقیقی هست که دقیقا مشخص کنه روز x از ماه y تو سال z شمسی دقیقا معادل چه روزی از تقویم قمری هستش. و چون مناسبتها مربوط به تقویم قمری هلالی هستن، حتی در مورد آخر همین ماه قمری که الان توش هستیم هم با قطعیت نمیشه حرف زد چه برسه به آخر سال یا سالهای بعد. ما با اون فایل xml اومدیم معادل تقویم رسمی سال 92 که الان موجوده ایجاد کردیم، حتی ممکنه این تقویم هم مثلا تو محاسبه روز عید فطر اشتباه باشه، با این حال فرض بر این هستش که درست باشه (مگه خلافش ثابت بشه، که اونوقت باید HijriAdjustment ماه مورد نظر مجددا تغییر کنه))
    سلام
    ممنون از توضیحاتتون
    من هم دقیقا منظورم برای روزها و سالهایی بود که موضوع اختلاف معلوم شده . ( یعنی تاریخ گذشته .... )
    در واقع اگر برای روزها و سالهای بعد هم معلوم بود که اینهمه حرف و حدیث مثلا برای پایان ماه رمضان هر سال تکرار نمیشد !!!!
    بهر حال بنظر من وجود نود سال در فایل xml برای سالهای قبل خالی از لطف نیست
    موفق باشید

  5. #5

    نقل قول: دانلود کنید: کامپوننت DataPicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه ب

    دکمه تشکر جوایگوی زحمات شما نمی شه از شما بی نهایت تشکر میکنم
    ممنون. لطف دارید
    بهر حال بنظر من وجود نود سال در فایل xml برای سالهای قبل خالی از لطف نیست
    درسته ولی واقعا حوصله میخواد بشینی واسه مثلا 90 سال این کار رو انجام بدی. (طرف بیشتر باید تایپیست باشه تا برنامه نویس) تازه اونوقت یکی میاد میگه آقا این واسه 91 سال قبل مناسبتهاش درست نیست. حالا یا باید طرفو قانع کنی یا بشینی xml تا n سال قبل رو براش تهیه کنی.

  6. #6

    نقل قول: دانلود کنید: کامپوننت DataPicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه ب

    مرسی.....فقط یه مشکلی داره.من فایلهای xml رو تغییر میدم ولی توی dll که تو برنامه استفاده می کنم تغییر نمی کنه. فقط توی Testcontrol تغییر می کنه..

  7. #7
    کاربر دائمی
    تاریخ عضویت
    آبان 1390
    محل زندگی
    Drive: C
    پست
    506

    نقل قول: دانلود کنید: کامپوننت DataPicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه ب

    داداش سوال من مبتدیه ولی چطوری اجراش کنم وقتی اجرا میکنم ارور میده

  8. #8

    نقل قول: دانلود کنید: کامپوننت DataPicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه ب

    خیلی زحمت کشیدی
    ممنون
    من دو تا مشکل داخلش دیدم
    1- وقتی فاکوس ازش گرفته میشه بسته نمیشه
    2- اگه پایین فرم قرار داده بشه وقتی تقویم باز بشه روی فرم قرار نمی گیره
    البته بچه ها زحمت میکشن درستش میکن
    من هم سعی میکنم در اولین فرصت درستش کنم

  9. #9
    کاربر دائمی آواتار mohammad2407
    تاریخ عضویت
    شهریور 1390
    محل زندگی
    تهران
    پست
    502

    نقل قول: دانلود کنید: کامپوننت DataPicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه ب

    سلام تقویم زیبا و پر کاربردی هست

    فقط یک سوال چه جوری میشه کاری کرد که تقویم به صورت عادی باز باشه یعنی دیگه روی اون علامت فلش کلیک نکنیم

  10. #10

    نقل قول: دانلود کنید: کامپوننت DataPicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه ب

    سلام

    فقط یه مشکلی داره.من فایلهای xml رو تغییر میدم ولی توی dll که تو برنامه استفاده می کنم تغییر نمی کنه. فقط توی Testcontrol تغییر می کنه..
    اگه منظورت xml ای هست که تو ریسورس قرار گرفته، پروژه مربوط به کنترل رو 1 بار rebuild کن و dll رو مجددا اضافه کن به پروژه خودت.
    داداش سوال من مبتدیه ولی چطوری اجراش کنم وقتی اجرا میکنم ارور میده
    اگه منظورت اینه که پروژه باز نمیشه، تو پست 1 گفتم
    پروژه ضمیمه شده هم شامل سورس کامپوننت و هم یه برنامه برای تست کامپوننت هستش. با vs 2012 نوشته شده. تو ورژنهای پایین تر هر پروژه رو به صورت جداگانه و از طریق فایل csproj. اجرا کنید
    اگه نشد پروژه رو تو vs خودتون ایجاد کنید (یه کم حوصله میخواد)

    من دو تا مشکل داخلش دیدم
    1- وقتی فاکوس ازش گرفته میشه بسته نمیشه
    2- اگه پایین فرم قرار داده بشه وقتی تقویم باز بشه روی فرم قرار نمی گیره
    البته بچه ها زحمت میکشن درستش میکن
    من هم سعی میکنم در اولین فرصت درستش کنم
    مراجعه به پست 18
    آخرین ویرایش به وسیله Himalaya : یک شنبه 18 فروردین 1392 در 15:05 عصر

  11. #11
    کاربر دائمی آواتار linux
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    تهران
    پست
    2,313

    نقل قول: دانلود کنید: کامپوننت DataPicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه ب

    دیدم که از دیتاگرید استفاده کردید. این کار زیاد جالب نیست.

  12. #12

    نقل قول: دانلود کنید: کامپوننت DataPicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه ب

    سلام
    دیدم که از دیتاگرید استفاده کردید. این کار زیاد جالب نیست.
    دلیل؟ همینطوری که رو هوا نمیشه گفت جالب نیست.
    یکی میاد به جای گرید یه کلاس اختصاصی مینویسه مثلا به اسم CellInfo و با یه پراپرتی از نوع Rectangle (مشخصه طول و عرض سلول) و یک پراپرتی دیگه از نوع String (واسه Value اون سلول) و خلاصه انواع و اقسام پراپرتی های دیگه. و یه List از CellInfo ایجاد میکنه و در نهایت با استفاده از شیء گرافیک شروع میکنه به رسم عناصر تو ناحیه مورد نظر و همه چیز رو هم مجبوره خودش هندل میکنه (جایی که پای ترسیمات در میون باشه مجبوره)

    یکی دیگه میاد مثلا به جای همون کلاس CellInfo یه آرایه در نظر میگیره از Button ها (نمونه این DatePicker رو چند روز پیش یکی از بچه ها گزاشته بود) یا یه آرایه از Button های اختصاصی که خود طرف طراحی کرده. مثلا برای روزها یه آرایه 42 تایی و واسه ماهها یه آرایه 12 تایی و ... در نهایت میاد ایونت مورد نظر رو هم واسه هر کدوم تعریف میکنه و این کنترلهارو سر جای خودشون میچینه و تموم

    خوب مگه قراره هر کاری این بنده های خدا انجام دادن بقیه هم انجام بدن؟ حالا من اینجا اومدم از گرید استفاده کردم که به انواع و اقسام حالت ها میشه فرمت بندیش کردو دقیقا همون چیزی هست که مورد نیازه، بدون درگیر شدن با جزئیات روش اول (که خیلی کد نویسی داره و واسه کوچیک ترین موضوع باید کد نوشت) و بدون اینکه کنترل بیریختی به روش دوم تولید کنیم (میشه با این روش هم DatePicker زیبا تولیدکرد که اونم مشکلات خودشو داره.)

    خلاصه اینکه کنترل گرید به نظرم کم دردسر ترین حالت واسه تولید این DatePicker هستش (چه از نظر برنامه نویسی و چه از نظر حجم کدایی که برنامه نویس مجبوره بنویسه)
    نمیدونم شاید منظورتون این باشه که کنترل DataGridView واسه یه کار کوچولو مثل این، یه کم زیادی بزرگه (یا سنگینه خلاصه مناسب این کار نیست) که موافق نیستم با این حرف به دلایلی که عرض کردم

    موفق باشید

  13. #13

    نقل قول: دانلود کنید: کامپوننت DataPicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه ب

    باز هم ازت تشکر میکنم
    ولی اگه popup مثل popup کامپونت DateTimePicker خود سی شارپ باز بشه بهتره

  14. #14

    نقل قول: دانلود کنید: کامپوننت DataPicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه ب

    سلام
    ولی اگه popup مثل popup کامپونت DateTimePicker خود سی شارپ باز بشه بهتره
    آخرین ورژن رو ضمیمه پست 1 کردم. تو این ورژن از کنترل Popup استفاده شده که سورس این کنترل هم تو پروژه وجود داره. مشکلایی که تو پست 14 در موردشون گفتم توسط این کنترل حل شد.
    فقط یک سوال چه جوری میشه کاری کرد که تقویم به صورت عادی باز باشه یعنی دیگه روی اون علامت فلش کلیک نکنیم
    چند تا تغییر تو آخرین ورژن انجام شده که اینا هستن

    01.jpg

    1. یه پراپرتی به زیر مجموعه پراپرتی Value اضافه شده به اسم Mode. دو تا مقدر میگیره. مقدار DatePicker که باعث میشه تقویم توسط یک ComboBox (همون کنترل Popup) نمایش داده بشه و مقدار
    MonthCalendar که تقویم رو بدون ComboBox و به صورت ثابت نمایش میده
    2. تو پروژه یه کلاس تعریف شده به اسم DataGridViewFarsiDatePickerColumn. اگه Dll مربوط به کنترل رو به پروژتون اضافه کنید و یه گرید بزارید رو فرمتون، تو بخش تعریف ستونها، یه ستون از همین نوع اضافه شده. از پنجره پراپرتی های این نوع ستون میتونید به 3 پراپرتی DateFormat و ShowFarsiDigitInCell و Theme دسترسی داشته باشید. اولی که نوع متن رو تو سلول و DatePicker مشخص میکنه و دومی اعداد موجود تو سلول رو فارسی میکنه (در صورت true بودن و تو هر 2 حالت Long و Short) و سومی Theme تقویم رو در زمان ویرایش تاریخ مشخص میکنه (Blue و Gold). البته میتونید برای هر سلول تو این نوع ستون، مقادیر این پراپرتی ها رو تغییر بدید. مثلا سلول اول دارای Theme برابر Blue باشه و سلول بعدی Gold. این کار از طریق کد نویسی و استفاده از کلاس DataGridViewFarsiDatePickerCell قابل انجامه

    03.jpg
    آخرین ویرایش به وسیله Himalaya : یک شنبه 18 فروردین 1392 در 14:59 عصر

  15. #15

    نقل قول: دانلود کنید: کامپوننت DataPicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه ب

    با سلام و تشکر فراوان از کامپوننت کاربردیتون
    ی سوال داشتم. میخواستم بدونم چطور میشه روزهای تعظیل رو تشخیص داد، آیا پروپرتی ای واسه این درنظر گرفته شده یا نه؟ من خیلی به این مسئله نیازمندم.
    با تشکر از شما

  16. #16

    نقل قول: دانلود کنید: کامپوننت DataPicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه ب

    سلام
    ی سوال داشتم. میخواستم بدونم چطور میشه روزهای تعظیل رو تشخیص داد، آیا پروپرتی ای واسه این درنظر گرفته شده یا نه؟ من خیلی به این مسئله نیازمندم.
    تغییرات (FarsiCalendar (v4
    1. اضافه شدن 2 Theme دیگه (Green , WhiteSmoke)

    01.jpg

    2. اضافه شدن بخش Designer که میتونید پراپرتی ها رو از طریق بخش smart tag تنظیم کنید
    3. انتخاب تاریخ شمسی مورد نظر (انتخاب پیش فرض روز) از طریق باز شدن تقویم تو پراپرتی FarsiSelectedDate و یا گزینه Selected Date تو smart tag (تو ورژنهای قبل باید تاریخ تایپ میشد و احتمال داشت
    تاریخ درستی انتخاب نشه. هرچند این حالت کنترل شده بود)

    02.jpg

    4. اضافه شدن تابع IsHolidayFarsiDate تو کلاس FarsiDateHelper که تاریخ شمسی دریافت میکنه و مشخص میکنه این روز تعطیل هست یا نه
    5. اضافه شدن ایونت CellDateChanged به ستون DataGridViewFarsiDatePickerColumn که در صورت نیاز میتونید از طریق کدنویسی این ایونت رو استفاده کنید
    مثلا تو فرم لود داریم
    BirthDate.CellDateChanged += BirthDate_CellDateChanged;

    و پیاده سازی ایونت
            void BirthDate_CellDateChanged(DataGridViewFarsiDatePic  kerCell cell, FarsiDatePickerEventArgs e)
    {
    MessageBox.Show(string.Format("Cell[{0},{1}] \r\n Old FarsiDate: {2} \r\n New FarsiDate: {3}", cell.RowIndex,
    cell.ColumnIndex, e.OldFarsiDate, e.NewFarsiDate));
    }


    ورژن 4 رو از پست 1 دانلود کنید

  17. #17

    نقل قول: دانلود کنید: کامپوننت DataPicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه ب

    یه سوال داشتم اونم اینه که من میخوام مقدار تقویم جای خالی باشه .این تقویم همچنین قابلیتو داره؟

  18. #18

    نقل قول: دانلود کنید: کامپوننت DataPicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه ب

    سلام
    یه سوال داشتم اونم اینه که من میخوام مقدار تقویم جای خالی باشه .این تقویم همچنین قابلیتو داره؟
    تاریخی انتخاب نشه، تاریخ جاری سیستم به عنوان تاریخ پیشفرض در نظر گرفته میشه.
    اسم قابلیت که نمیشه به این مورد داد. بالاخره وقتی DatePicker استفاده میکنی یعنی نیاز داری یه تاریخ انتخاب بشه. پراپرتی Value از کنترل DateTimePicker خود دات نت هم حتما باید مقدار بگیره. اینم به همون صورت. تو کنترل خود دات نت با Set کردن پراپرتی ShowCheckBox=true و بعد از طریق کد dateTimePicker1.Checked میشه تشخیص داد که کاربر قصد انتخاب تاریخ داشته یا نه.
    شما هم با یه چک باکس همین کار رو انجام بدید. اگه تیک خورد، DatePicker رو فعال و اگه تیک برداشته شد کنترل رو غیر فعال کنید و مثلا زمان ذخیره تاریخ، برسی کنید که این چک باکس تو چه حالتی هستش. اگه تیک نداشت، مقدار پیش فرض خودتون رو مد نظر قرار بدید

    موفق باشید

  19. #19
    کاربر جدید آواتار sarbandi
    تاریخ عضویت
    مهر 1386
    محل زندگی
    کاشان
    سن
    39
    پست
    25

    نقل قول: دانلود کنید: کامپوننت DataPicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه ب

    ممنون بابت کامپوننت بسیار زیبایی که ایجاد کردید
    همه نکات را رعایت کردید اما اگر datapicker خود net. را دیده باشی به صورت دستی هم می توان داخل آن مقدار ریخت و اینکه از کلیدهای بالاو پایین می توان جهت کم یا زیاد کردن روز و ماه وسال استفاده کرد همانطور که می دانید کاربرانی که از صفحه کلید در ویندوز جهت ثبت استفاده می کنند اصلا دوست ندارند که از موس استفاده کنند و باعث کندی کار میشه
    البته این نظر شخصی من بود جهت بهبود کامپوننت
    با تشکر

  20. #20

    نقل قول: دانلود کنید: کامپوننت DataPicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه ب

    سلام
    ممنون بابت کامپوننت بسیار زیبایی که ایجاد کردید
    همه نکات را رعایت کردید اما اگر datapicker خود net. را دیده باشی به صورت دستی هم می توان داخل آن مقدار ریخت و اینکه از کلیدهای بالاو پایین می توان جهت کم یا زیاد کردن روز و ماه وسال استفاده کرد همانطور که می دانید کاربرانی که از صفحه کلید در ویندوز جهت ثبت استفاده می کنند اصلا دوست ندارند که از موس استفاده کنند و باعث کندی کار میشه
    البته این نظر شخصی من بود جهت بهبود کامپوننت
    با تشکر
    یه دوست دیگه هم با پیام خصوصی این موارد رو گفته بود
    با سلام
    با تشکر از شما بابت تقویم زیبای شما
    ایا امکان داره تو تقویم وقتی از datepicker استفاده می کنیم به صورت دستی تایپ کرد شما تایپ دستی رو بستید
    جوابی که دادم:
    میشه تایپ دستی هم قرار داد. فایل FarsiCalendar رو تو پروژه AmirCalendar تو حالت دیزاین باز کن و از پنجره پراپرتیها کنترل popupDatePicker انتخاب کن و پراپرتی DropDownStyle رو روی DropDown بزار. پروژه رو کامپایل کن و از Dll جدید استفاده کن. ولی .....
    اول اینکه بهتره که تایپ نکنه تا تاریخ اشتباهی وارد نشه که حالا مجبور باشیم اون رو هندل کنیم. حالا به جای تایپ تو خود DropDown کاربر تو NumericUpDown هایی که استفاده شده تایپ کنه. زودتر هم به نتیجه میرسه
    دوم اینکه فقط با set کردن پراپرتی گفته شده کارتون راه نمیافته چون من مقدار FarsiSelectedDate رو تو ایونت CellClick از گرید Set کردم و تغییر تکست DropDown کار این ایونت رو انجام نمیده و مجبورید ایونت popupDatePicker.TextChange رو خودتون طبق ایونت CellClick گفته شده بنویسید و البته تمام کنترلهای لازم رو هم برای وارد نشدن تاریخ اشتباه انجام بدید.

    مجددا گفتن
    میدونی برای چی این قضیه رو گفتن چون من یه مدت بود ار تقویم تلریک استفاده می کردم داخل تقویم تلریک با کلید بالا و پایین می تونیم تاریخ رو کم وزیاد کنیم و اینکه به راحتی عدد وارد کنیم وقتی تاریخ رو به شمسی تبدیل می کردم کلید بالا وپایین خوب کار می کرد یعنی وقتی من روز ها را بالا می بردم وقتی ماه سی روز بود بعد از سی روز دیگه 31 نمی شد و یه عدد به ماه اضافه می شدتنها مشکلی که داره اینه وقتی حالت شمسی هست به صورت دستی وارد می کنیم اشتباه میزنه یه عدد دیگه ولی میلادی جواب میده
    شما خیلی تقویم بسیار عالی درست کردید واقعا داخل .net همچین تقویمی نیاز است اما وقتی کاربر با صفحه کلید کار میکنه دیگه دوست نداره که از موس استفاده کنم اگه کاربر بتونه تو همون لحظه تایپ کنه وبره سراغ کنترل بعدی البته این نظرم من بود (اگه این دو قسمت که گفتم داشته باشه دیگه هیچی کم نداره)
    بازم از شما متشکرم بابت این تقویم بسیار زیبا مخصوصا که روز های تعطیل هم داخل اون هست
    و جواب:
    واسه کار با کیبورد
    فایل FarsiCalendar رو تو حالت دیزاین باز کن و از پنجره پراپرتی کنترل Popup رو انتخاب کن و ایونت های KeyDown و KeyUp رو ایجاد کن براش و 3 تا متغیر تعریف کن مثلا به اسم _yPress, _mPress, _dPress از نوع bool که نشون میدن کدوم کلید الان فشرده شده (Y/M/D). تو keyDown از مقدار e.KeyCode استفاده کن و با یه سویچ کیس تشخیص بده کدوم یکی از این 3 تا فشرده شده و متغیر مربوط به اون رو true کن. تو ایونت KeyUp هم از همین استفاده کن و اینبار مقدار کلیدی که رها شده رو false کن.
    تو ادامه کدای keyDown یه سویچ کیس دیگه قرار بده و 2 حالت e.keyCode = Keys.Up و Keus.Down رو بررسی کن و داخل هر کدوم 3 تا if که مشخص میکنه کدوم قسمت تاریخ باید تغییر کنه. اگه yPress_ برابر true بود، تو بخش Keys.up یعنی سال رو باید 1 واحد ببری جلو. یعنی
    ((Value.SelectedFarsiDate = FarsiDateHelper.GetShortFarsiDate(Value.GregorianS electedDate.AddYear(1
    واسه yPress_ برابر true و Keys.Down هم همین کد رو استفاده میکنی فقط به جای 1 میزازی 1-
    این واسه سال.
    واسه ماه هم از mPress_ و برای روز هم از dPress_ استفاده میکنی.
    در اصل با ترکیب کلیدهای Y + Up/Down مقدار سال و کلیدهای M +Up/Down مقدار ماه و کلیدهای D + Up/Down مقدار روز رو تغییر میدیم.
    10و 15 خط کد بیشتر نیست. پیاده سازیش با خودتون

    خلاصه اینکه من کدهای این کامپوننت رو هم قرار دادم که دوستان هم اگه شد روش کار کنن و اون چیزایی که مد نظرشون هست رو بهش اضافه کنن و بزارن اینجا واسه استفاده بقیه
    به هر حال، کار با کیبورد رو هم به این کامپوننت اضافه کردم. کلاس FarsiCalendar رو که تو همین پست پیوست کردم کافیه جایگزین فایل FarsiCalendar.cs بشه. بعدش پروژه رو یک بار کامپایل کنید و از کامپوننت استفاده کنید
    تو حالت DatePicker طبق گفته قبلی، بخشهای تاریخ رو میتونید کم و زیاد بکنید
    با ترکیب کلیدهای Y + Up/Down مقدار سال و کلیدهای M +Up/Down مقدار ماه و کلیدهای D + Up/Down مقدار روز رو تغییر میدیم
    موفق باشید
    فایل های ضمیمه فایل های ضمیمه

  21. #21
    کاربر دائمی آواتار FastCode
    تاریخ عضویت
    تیر 1388
    محل زندگی
    /dev/null
    پست
    3,486

    نقل قول: دانلود کنید: کامپوننت DataPicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه ب

    خیلی قشنگه و باید بگم من هم همون مشکلی رو دارم که لینوکس داره.
    دیتا گرید اصلا جالب نیست.چون توی لینوکس نوشته هاش خراب میشه.البته یک سالی میشه که تست نکردم ولی باید هنوز هم همین مشکل رو داشته باشه.
    متاسفانه الان فرصت تست ندارم ولی اگر گرید رو درست کنم براتون نسخه اصلاح شده رو میفرستم.

  22. #22

    نقل قول: دانلود کنید: کامپوننت DataPicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه ب

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

  23. #23
    کاربر دائمی آواتار FastCode
    تاریخ عضویت
    تیر 1388
    محل زندگی
    /dev/null
    پست
    3,486

    نقل قول: دانلود کنید: کامپوننت DataPicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه ب

    من خودم شخصا به چنین کامپوننتی در لینوکس شدیدا نیاز دارم چون در ویندوز یک کاپپوننت شبیه همین ساختم که اون هم همین مشکل رو در لینوکس داره.
    من در نظر دارم به جای DataGridView از OpenTK و OpenGL ES 2 و در صورت امکان OpenGL ES 1 استفاده کنم.
    ولی فعلا اصلا وقت ندارم.شاید تا چند ماه دیگه هم بهش نرسم.چون خیلی کم OpenGL بلدم و کار با OpenTK رو تازه شروع کردم.

    یکی دو ساله که دارم از ویندوز مهاجرت میکنم به لینوکس. کلا همه چیز رو از اول نوشتم.ولی هنوز همینطوری گرفتارشم.:sad:

  24. #24
    کاربر جدید آواتار sarbandi
    تاریخ عضویت
    مهر 1386
    محل زندگی
    کاشان
    سن
    39
    پست
    25

    نقل قول: دانلود کنید: کامپوننت DataPicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه ب

    نقل قول نوشته شده توسط karaji333 مشاهده تاپیک
    سلام

    یه دوست دیگه هم با پیام خصوصی این موارد رو گفته بود

    جوابی که دادم:
    میشه تایپ دستی هم قرار داد. فایل FarsiCalendar رو تو پروژه AmirCalendar تو حالت دیزاین باز کن و از پنجره پراپرتیها کنترل popupDatePicker انتخاب کن و پراپرتی DropDownStyle رو روی DropDown بزار. پروژه رو کامپایل کن و از Dll جدید استفاده کن. ولی .....
    اول اینکه بهتره که تایپ نکنه تا تاریخ اشتباهی وارد نشه که حالا مجبور باشیم اون رو هندل کنیم. حالا به جای تایپ تو خود DropDown کاربر تو NumericUpDown هایی که استفاده شده تایپ کنه. زودتر هم به نتیجه میرسه
    دوم اینکه فقط با set کردن پراپرتی گفته شده کارتون راه نمیافته چون من مقدار FarsiSelectedDate رو تو ایونت CellClick از گرید Set کردم و تغییر تکست DropDown کار این ایونت رو انجام نمیده و مجبورید ایونت popupDatePicker.TextChange رو خودتون طبق ایونت CellClick گفته شده بنویسید و البته تمام کنترلهای لازم رو هم برای وارد نشدن تاریخ اشتباه انجام بدید.

    مجددا گفتن


    و جواب:
    واسه کار با کیبورد
    فایل FarsiCalendar رو تو حالت دیزاین باز کن و از پنجره پراپرتی کنترل Popup رو انتخاب کن و ایونت های KeyDown و KeyUp رو ایجاد کن براش و 3 تا متغیر تعریف کن مثلا به اسم _yPress, _mPress, _dPress از نوع bool که نشون میدن کدوم کلید الان فشرده شده (Y/M/D). تو keyDown از مقدار e.KeyCode استفاده کن و با یه سویچ کیس تشخیص بده کدوم یکی از این 3 تا فشرده شده و متغیر مربوط به اون رو true کن. تو ایونت KeyUp هم از همین استفاده کن و اینبار مقدار کلیدی که رها شده رو false کن.
    تو ادامه کدای keyDown یه سویچ کیس دیگه قرار بده و 2 حالت e.keyCode = Keys.Up و Keus.Down رو بررسی کن و داخل هر کدوم 3 تا if که مشخص میکنه کدوم قسمت تاریخ باید تغییر کنه. اگه yPress_ برابر true بود، تو بخش Keys.up یعنی سال رو باید 1 واحد ببری جلو. یعنی
    ((Value.SelectedFarsiDate = FarsiDateHelper.GetShortFarsiDate(Value.GregorianS electedDate.AddYear(1
    واسه yPress_ برابر true و Keys.Down هم همین کد رو استفاده میکنی فقط به جای 1 میزازی 1-
    این واسه سال.
    واسه ماه هم از mPress_ و برای روز هم از dPress_ استفاده میکنی.
    در اصل با ترکیب کلیدهای Y + Up/Down مقدار سال و کلیدهای M +Up/Down مقدار ماه و کلیدهای D + Up/Down مقدار روز رو تغییر میدیم.
    10و 15 خط کد بیشتر نیست. پیاده سازیش با خودتون

    خلاصه اینکه من کدهای این کامپوننت رو هم قرار دادم که دوستان هم اگه شد روش کار کنن و اون چیزایی که مد نظرشون هست رو بهش اضافه کنن و بزارن اینجا واسه استفاده بقیه
    به هر حال، کار با کیبورد رو هم به این کامپوننت اضافه کردم. کلاس FarsiCalendar رو که تو همین پست پیوست کردم کافیه جایگزین فایل FarsiCalendar.cs بشه. بعدش پروژه رو یک بار کامپایل کنید و از کامپوننت استفاده کنید
    تو حالت DatePicker طبق گفته قبلی، بخشهای تاریخ رو میتونید کم و زیاد بکنید


    موفق باشید
    شاید منظورم را درست نرسونده باشم
    اگر عکس زیر رو نگاه کنید تاریخ سه حالت فوکوس داره که الان فوکوس روی ماه قرار گرفته اگر به صورت دستی تایپ کنم ماه تغییر میکنه و اگر از کلید بالا و پایین استفاده کنم ققط ماه تغییر میکنه حال اگر خواسته باشم سال یا روز رو تغییر بدهم می تونم با کلیدهای راست وچپ فوکوس ررا روی روز و سال ببرم و انها را تغییر بدهم
    موفق باشید

    1.jpg

  25. #25

    نقل قول: دانلود کنید: کامپوننت DataPicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه ب

    سلام
    شاید منظورم را درست نرسونده باشم
    اگر عکس زیر رو نگاه کنید ...
    چرا فهمیدم و عرض کردم که
    اگه کمبودی داره دیگه زحمتش با خودتون. کمبودهاشو رفع کنید و نتیجه رو مجددا بزارید اینجا که بقیه هم استفاده کنن
    و
    خلاصه اینکه من کدهای این کامپوننت رو هم قرار دادم که دوستان هم اگه شد روش کار کنن و اون چیزایی که مد نظرشون هست رو بهش اضافه کنن و بزارن اینجا واسه استفاده بقیه
    میشه تایپ دستی هم قرار داد. فایل FarsiCalendar رو تو پروژه AmirCalendar تو حالت دیزاین باز کن و از پنجره پراپرتیها کنترل popupDatePicker انتخاب کن و پراپرتی DropDownStyle رو روی DropDown بزار. پروژه رو کامپایل کن و از Dll جدید استفاده کن (+ کنترل متنی که تایپ میشه) و ...
    از همون اول که شروع به طراحی این کامپوننت کردم، هدفم این بوده که کاربر مطلقا چیزی داخل کمبو تایپ نکنه و فقط انتخاب کنه. حالا اگه میبینید نیازتون رو برآورده نمیکنه بسم الله، تغییرش بدید

    موفق باشید

  26. #26

    نقل قول: دانلود کنید: کامپوننت DataPicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه ب

    چه جوري تاريخ ذخيره شده را در تقويم نمايش بدهيم مثلا ميخوام تقويم 1392/03/05 را نشون بده ؟

  27. #27

    نقل قول: دانلود کنید: کامپوننت DataPicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه ب

    سلام دوست عزیز

    لطف میکنین راجع به نحوه انجام مورد زیر که در پست 20 مطرح کردید توضیح بدید که چه تغییراتی دادید تا این حالت درست شد ؟

    . انتخاب تاریخ شمسی مورد نظر (انتخاب پیش فرض روز) از طریق باز شدن تقویم تو پراپرتی FarsiSelectedDate و یا گزینه Selected Date تو smart tag (تو ورژنهای قبل باید تاریخ تایپ میشد و احتمال داشت

  28. #28

    نقل قول: دانلود کنید: کامپوننت DataPicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه ب

    سلام

    چه جوري تاريخ ذخيره شده را در تقويم نمايش بدهيم مثلا ميخوام تقويم 1392/03/05 را نشون بده ؟
    اگه تاریخ شمسی باشه از datapicker.Value.FarsiSelectedDate برای ست کردن تاریخ استفاده میشه. واسه ست کردن تاریخ از طریق تاریخ میلادی هم یه تغییر کوچولو داریم
            /// <summary>
    /// Gets or sets the gregorian date value assigned to the control.
    /// </summary>
    [Browsable(false)]
    public DateTime GregorianSelectedDate
    {
    get { return FarsiDateHelper.GetGregorianDate(FarsiSelectedDate ); }
    set { FarsiSelectedDate = FarsiDateHelper.GetShortFarsiDate(value); }
    }

    بعدش از datapicker.Value.GregorianSelectedDate واسه ست کردن تاریخ از طریق تاریخ میلادی استفاده کنید.


    لطف میکنین راجع به نحوه انجام مورد زیر که در پست 20 مطرح کردید توضیح بدید که چه تغییراتی دادید تا این حالت درست شد ؟
    کلاس FarsiCalendarDesigner و معرفی این کلاس توسط اتریبیوت Designer، به کلاس FarsiCalendar، بخش smart tag رو ایجاد میکنه
    کلاس TypeEditor و معرفی این کلاس توسط اتریبیوت Editor، به پراپرتی FarsiSelectedDate، باعث میشه زمان انتخاب این پراپرتی، تقویم باز، و بشه ازش یه تاریخ انتخاب کرد

    موفق باشید

  29. #29

    نقل قول: دانلود کنید: کامپوننت DataPicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه ب

    دوست عزیز در ادامه توضیحات بالا عملکرد این کنترل در خصوص موارد زیر به چه صورت است.
    چنانچه تاریخ میلادی در دیتا بیس ذخیره باشد و این کنترل از طریق پروپرتی GregorianSelectedDate به ستون مربوطه در دیتابیس توسط dataset بایند باشد ، اگر تاریخ فارسی را تغییر دهیم آیا قابلیت این را دارد که تاریخ میلادی را در فیلدی که به آن بایند شده نیز تغییر دهد ؟ یا صرفا تاریخ میلادی بایند شده را بصورت فارسی آن نمایش می دهد؟

  30. #30

    نقل قول: دانلود کنید: کامپوننت DataPicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه ب

    سلام
    چنانچه تاریخ میلادی در دیتا بیس ذخیره باشد و این کنترل از طریق پروپرتی GregorianSelectedDate به ستون مربوطه در دیتابیس توسط dataset بایند باشد ، اگر تاریخ فارسی را تغییر دهیم آیا قابلیت این را دارد که تاریخ میلادی را در فیلدی که به آن بایند شده نیز تغییر دهد ؟ یا صرفا تاریخ میلادی بایند شده را بصورت فارسی آن نمایش می دهد؟
    تا قبل از این اگه تاریخ فارسی تو دیتابیس (یا هر منبع داده ای) ذخیره میشد (با فرمت yyyy/mm/dd)، و به ستون از نوع DataGridViewFarsiDatePickerColumn، بایند میشد، این کنترل قادر بود تاریخ رو نمایش بده و زمان ویرایش تاریخ تو سلول مورد نظر هم تقویم باز میشد و میتونستید تاریخ جدید رو انتخاب کنید.
    1. برای اینکه علاوه بر مورد بالا (تاریخ فارسی تو منبع داده)، تاریخ میلادی هم تو گرید، از طریق ستون DataGridViewFarsiDatePickerColumn قابل نمایش باشه، کلاس DataGridViewFarsiDatePickerColumn رو که به این پست پیوست کردم دانلود و تو پروژه جایگزین کنید و پروژه رو مجددا کامپایل و از dll جدید استفاده کنید
    2. ببینید قرار نیست هیچ کنترلی بدون اطلاع برنامه نویس (کسی که از این کنترل استفاده میکنه، نه طراح اون) کاری رو انجام بده. تو این مورد هم همینطوره. شما تاریخ رو تو یکی از سلولهای گرید تغییر بدید، نباید اون تاریخ تو منبع داده تغییر کنه، مگه اینکه خود شما بخواید. واسه این کار هم از ایونتی که برای این نوع ستون در نظر گرفتم میتونید استفاده کنید (پست 20 گزینه 5)
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله Himalaya : شنبه 01 تیر 1392 در 20:32 عصر

  31. #31

    Unhappy نقل قول: دانلود کنید: کامپوننت DataPicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه ب

    سلام
    میشه یکی به داد ما مبتدی ها هم برسه و از اول بگه که باید با این فولدر چه کنیم؟!
    اولا که با 2010 باز نمیشه، با این مشکل چه کنم
    بعد هم میخوام این تقویم با کلیک روی کمبوباکس باز شه و تاریخ رو انتخاب کنه
    یه چیز مهم دیگه هم اینکه، من یه روز پیش فرض دارم مثلا دوشنبه، میخوام تاریخ اولین دوشنبه از تاریخ امروز رو در پیش فرض نشون بده

    یه روزی همه مبتدی بودین،پس لطفا به ما مبتدی ها کمک کنید

  32. #32

    نقل قول: دانلود کنید: کامپوننت DataPicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه ب

    هورااااااااااااااااااااا من با 2010 با یه راه حل زیبا و ساده بازش کردم ، اینجا میزارم برای دوستانی که 2010 دارن

    1. فایل solution رو با Notepad یا wordpad باز کنید
    2. در Header فایل، version رو به 11.00 و Visual Studio رو به 2010 تغییر بدید

  33. #33

    نقل قول: دانلود کنید: کامپوننت DataPicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه ب

    آقای امیر (Karaji333) میشه بگید چطور میشه قیافه این کمبو را به صورت عادی در آورد

  34. #34

    نقل قول: دانلود کنید: کامپوننت DataPicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه ب

    سلام.یه مشکل اساسی که تو همه تقویمای شمسی هست اونم مقدار null هستش.تو این کمپوننت به این زیبایی چرا حل نشده؟

  35. #35

    نقل قول: دانلود کنید: کامپوننت DataPicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه ب

    سلام
    آقای امیر (Karaji333) میشه بگید چطور میشه قیافه این کمبو را به صورت عادی در آورد
    متوجه نشدم. این کامپوننت تو حالت DatePicker داره از کمبوباکس استفاده میکنه دیگه. قیافه عادی برای کمبو یعنی چی؟
    سلام.یه مشکل اساسی که تو همه تقویمای شمسی هست اونم مقدار null هستش.تو این کمپوننت به این زیبایی چرا حل نشده؟
    در مورد حالت DatePicker و MonthCalendar تو پست 22 توضیح دادم.
    در مورد DataGridViewFarsiDatePickerColumn هم کلاسی که تو پست 34 ضمیمه کردم رو تو پروژه جایگزین کنید تا مقدار null هم تو ستون در نظر گرفته بشه (چه تو حالت تاریخ شمسی (string) و چه تو حالت تاریخ میلادی (DateTime)). با این کار، سلولهایی از این ستون که با null ست شدن، تاریخی رو نمایش نمیدن

    موفق باشید

  36. #36

    نقل قول: دانلود کنید: کامپوننت DataPicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه ب

    در مورد حالت DatePicker و MonthCalendar تو پست 22 توضیح دادم.
    در مورد DataGridViewFarsiDatePickerColumn هم کلاسی که تو پست 34 ضمیمه کردم رو تو پروژه جایگزین کنید تا مقدار null هم تو ستون در نظر گرفته بشه (چه تو حالت تاریخ شمسی (string) و چه تو حالت تاریخ میلادی (DateTime)). با این کار، سلولهایی از این ستون که با null ست شدن، تاریخی رو نمایش نمیدن

    موفق باشید[/QUOTE]

    میشه راهنماای کنید چجوری کلاس رو جایگزین کنم؟

  37. #37

    نقل قول: دانلود کنید: کامپوننت DataPicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه ب



    میشه راهنماای کنید چجوری کلاس رو جایگزین کنم؟
    این فایل رو کپی کن به جای فایل قبلی در پوشه پروژه

  38. #38

    نقل قول: دانلود کنید: کامپوننت DataPicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه ب

    سلام
    در کلاس زیر



    DataGridViewFarsiDatePickerColumn


    خط 230

    برای چه منظوری این کد رو نوشتین :



    .ToString(CultureInfo.InvariantCulture)
    آخرین ویرایش به وسیله sh : جمعه 07 تیر 1392 در 20:53 عصر

  39. #39

    نقل قول: دانلود کنید: کامپوننت DataPicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه ب

    سلام
    برای چه منظوری این کد رو نوشتین : ...
    مقدار تاریخ رو (چه شمسی چه میلادی) تو پراپرتی EditingControlFormattedValue باید به صورت رشته در نظر بگیریم و بعد تو قالب object برگردونیم.
    اون CultureInfo.InvariantCulture باعث میشه زمان تبدیل تاریخ میلادی به string، تنظیمات کامپیوتر تو قسمت regional setting نادیده گرفته بشن و حالت پیشفرض اون که مثلا تاریخ رو با جدا کننده / نمایش میده (نه - یا هر چیز دیگه)، در نظر گرفته بشه. (حالا جدا کننده مربوط به اعداد و حالت AM,PM و ... به کنار) یه مورد استفادش مثلا واسه زمانی هستش که میخواید بین 2 کامپیوتر اطلاعات رد و بدل کنید. حالا اگه از CultureInfo.CurrentCulture استفاده کنید، تو یک کامپیوتر (که بخش Date تو regional setting به صورت yyyy-MM-dd تنظیم شده) تاریخ به صورت 30-06-2013 میشه و تو اون یکی (با تنظیمات به صورت MM/dd/yyyy) تاریخ به صورت 06/30/2013 نمایش داده میشه. این تفاوت ممکنه باعث بروز مشکلاتی بشه. اما با CultureInfo.InvariantCulture تو هر دو، تاریخ به صورت 06/30/2013 نمایش داده میشه.
    اما تو این کامپوننت ...
    استفاده خاصی نداره. صرفا برای لبیک گفتن به پیشنهاد Resharper بوده. شما به جاش میتونید مثلا از کد زیر استفاده کنید
    this.Value.GregorianSelectedDate.ToShortDateString  ()


    موفق باشید

  40. #40

    نقل قول: دانلود کنید: کامپوننت DataPicker فارسی با قابلیت نمایش مناسبتهای تقویم شمسی و قمری (همراه ب

    واسه من نه کد نویسیش میاد نه فرمش نمیشه دللشو بزارین ؟

صفحه 1 از 2 12 آخرآخر

تاپیک های مشابه

  1. خبر: دانلود کنید:کامپوننت پرینت از هر قسمت از صفحه
    نوشته شده توسط Himalaya در بخش ASP.NET Web Forms
    پاسخ: 23
    آخرین پست: دوشنبه 17 مرداد 1390, 12:10 عصر
  2. (دانلود کنید) آموزش ساخت Setup با VisuallStudio
    نوشته شده توسط مهدی رحیم زاده در بخش Setup و Deployment
    پاسخ: 11
    آخرین پست: سه شنبه 10 خرداد 1390, 12:36 عصر
  3. خبر: دانلود کنید: کامپوننت تصاویر امنیتی همراه با سورس کد
    نوشته شده توسط Himalaya در بخش ASP.NET Web Forms
    پاسخ: 0
    آخرین پست: دوشنبه 12 اردیبهشت 1390, 23:37 عصر
  4. دانلود کنید :: پروژه دفتر تلفن با جاوا
    نوشته شده توسط sam166 در بخش Java SE : نگارش استاندارد جاوا
    پاسخ: 0
    آخرین پست: جمعه 17 دی 1389, 20:44 عصر
  5. خبر: دانلود کنید: کامپوننت (Jquery Slide Show (visual LightBox
    نوشته شده توسط Himalaya در بخش ASP.NET Web Forms
    پاسخ: 9
    آخرین پست: شنبه 27 آذر 1389, 12:16 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •