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

نام تاپیک: تقویم شمسی + DLL

Hybrid View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1
    کاربر دائمی آواتار Behnam6670
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    زیر آسمان آبی خدا
    پست
    496

    تقویم شمسی + DLL

    سلام دوستان خسته نباشید

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

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

    حتما اساتید بهتر از من میدونن که برا استفاده از dll میتونن اونو تو رفرنس پروژه اضافه کنید
    بعد از اضافه کردن هم کد زیر رو هرجا که خواستید تقویم شمسی رو داشته باشید استفاده کنید


    BPersianCalender.shamsiCalander shamsi = new BPersianCalender.PCalander().getshamsiCalander();



    کلاس BPersianCalender.shamsiCalander دوتا Property داره به نامهای ShamsiDate و MiladiDate که بعد از اینکه تقویم رو باز کردید و یک روز رو انتخاب کردید مقدار شمسی و میلادی رو به ترتیب برمیگردونن

    مثلا من یه button دارم و یه textBox میخوام کلیک کنم و تقویم باز بشه و یک روز رو انتخاب کنم و معادل اون رو تو TextBox برام نشون بده از کد زیر استفاده میکنم





    private void button1_Click(object sender, EventArgs e)
    {
    BPersianCalender.shamsiCalander shamsi = new BPersianCalender.PCalander().getshamsiCalander();
    TextBox1.Text = shamsi.ShamsiDate;

    }



    نوع ShamsiDate به صورت رشته است و MiladiDate هم DateTime

    BPersianCalender.png


    امیدوارم به درد دوستان بخوره و ازش استفاده کنن
    راستی نظر یادتون نره
    لایسنس:صلوات بر محمد و آل محمد
    اگه کسی سورس هم خواست بگه تا براش بدم
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله Behnam6670 : یک شنبه 20 مهر 1393 در 10:08 صبح

  2. #2
    کاربر دائمی آواتار امیر مهرشاد
    تاریخ عضویت
    آذر 1390
    محل زندگی
    بجنورد (پاریس کوچولو)
    پست
    686

    نقل قول: تقویم شمسی+DLL

    33.jpg2.jpg

    این خطا رو هنگام اضافه کردن به رفرنس میده

  3. #3
    کاربر دائمی آواتار Behnam6670
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    زیر آسمان آبی خدا
    پست
    496

    نقل قول: تقویم شمسی+DLL

    نقل قول نوشته شده توسط امیر مهرشاد مشاهده تاپیک
    33.jpg2.jpg

    این خطا رو هنگام اضافه کردن به رفرنس میده
    دوست عزیر نباید مشکلی داشته باشه.شما از دات نت چند استفاده میکنید؟

  4. #4
    کاربر دائمی آواتار امیر مهرشاد
    تاریخ عضویت
    آذر 1390
    محل زندگی
    بجنورد (پاریس کوچولو)
    پست
    686

    نقل قول: تقویم شمسی+DLL

    نقل قول نوشته شده توسط Behnam6670 مشاهده تاپیک
    دوست عزیر نباید مشکلی داشته باشه.شما از دات نت چند استفاده میکنید؟
    3.5 - 4.5 ولی توی 3.5 فقط چک کردم

  5. #5

    نقل قول: تقویم شمسی+DLL

    نقل قول نوشته شده توسط امیر مهرشاد مشاهده تاپیک
    33.jpg2.jpg

    این خطا رو هنگام اضافه کردن به رفرنس میده
    من هم چند وقت پیش با ویژال 2010 همین مشکل رو داشتم ولی الان که با ویژال 2012 کار میکنم دیگه این مشکل رو ندارم
    با سپاس Spaceman

  6. #6
    کاربر دائمی آواتار Behnam6670
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    زیر آسمان آبی خدا
    پست
    496

    نقل قول: تقویم شمسی+DLL

    این کامپوننت با ویژوال استودیو 2012 تولید شده

  7. #7
    کاربر دائمی آواتار Behnam6670
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    زیر آسمان آبی خدا
    پست
    496

    نقل قول: تقویم شمسی+DLL

    دوستان من یه تغییر کوچیک تو این کامپوننت دادم و اونو تبدیلش کردم به یه تکست باکس
    فقط کافیه شما کامپوننت رو از قسمت ابزارهاتون add کنید یه کامپوننتی به اسم BTextBox به لیست ابزارهاتون اضافه میشه میتونید روش دابل کلیک کنید و بندازید رو فرم
    موقع اجرا هم هروقت تو اون TextBox کلید Enter رو بزنید میتونید تاریخ رو انتخاب کنید.
    دات نت 3
    راستی حجمش رو هم پایینتر اوردم
    فایل های ضمیمه فایل های ضمیمه

  8. #8
    کاربر دائمی آواتار juza66
    تاریخ عضویت
    دی 1389
    محل زندگی
    هفت تپه - 7hill
    پست
    798

    نقل قول: تقویم شمسی+DLL

    سلام

    عالی میشه سورس و آموزش رو هم بذارید


    تشکر

  9. #9

    نقل قول: تقویم شمسی+DLL

    کامپوننت خوبیه ولی یه کم بیشتر به امکانات و قیافه اش اضافه کنید اگه میشه

    مزیت اصلی و فعلی کامپوننت شما حجمشه -- حواستون بهش باشه الکی زیاد نشه (چون کامپوننت BehComponent هست و امکانات بیشتری نسبت به کامپوننت شما داره)

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

    موفق باشید

  10. #10
    کاربر دائمی آواتار Behnam6670
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    زیر آسمان آبی خدا
    پست
    496

    نقل قول: تقویم شمسی+DLL

    از اینکه دوستان لطف کردن و استفاده کردن از کامپوننت تقویم فارسی و نظرشون رو گفتن ممنون و سپاسگذارم
    من حقیقتش کلا 2 ساعت رو این کامپوننت وقت گذاشتم از بابت رنگ و لعاب هم که دوستمون اشاره کردن باید بگم بله جا زیاد داره شاید تو نسخه بعدی هم ظاهرش و هم امکاناتش رو عوض کنم

    اگه دوستان مایل باشند میتونم هم سورس رو بزارم هم آموزش رو از اول تا آخر ارائه بدم
    بازم ممنون
    راستی اگه به درد کسی خورد فقط یک صلوات
    موفق باشید

  11. #11
    کاربر دائمی آواتار juza66
    تاریخ عضویت
    دی 1389
    محل زندگی
    هفت تپه - 7hill
    پست
    798

    نقل قول: تقویم شمسی+DLL

    تشکر


    فقط میشه اموزش ساخت این کامپونت رو بگید/.
    سورس رو نگاه کردم متوجه نشدم چکار کردید میشه سورس خودتون رو بذارید ببینیم چه ها کردید؟!


    تشکر ویژه

  12. #12
    کاربر دائمی آواتار Behnam6670
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    زیر آسمان آبی خدا
    پست
    496

    نقل قول: تقویم شمسی+DLL

    چشم بزودی آموزش ساخت این کامپوننت رو هم میزارم فقط الان یکم سرم شلوغه
    البته اگه دوستان زیادی باشن که مایل به آموزش باشن میتونم یه وقت فوق العاده بزارم و آموزشش رو براتون بزارم
    آخرین ویرایش به وسیله Behnam6670 : یک شنبه 20 مهر 1393 در 10:09 صبح

  13. #13
    کاربر دائمی آواتار امیر مهرشاد
    تاریخ عضویت
    آذر 1390
    محل زندگی
    بجنورد (پاریس کوچولو)
    پست
    686

    نقل قول: تقویم شمسی+DLL

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

  14. #14
    کاربر دائمی آواتار Behnam6670
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    زیر آسمان آبی خدا
    پست
    496

    نقل قول: تقویم شمسی+DLL

    این کامپوننت با دات نت 3 قابل اجراست

  15. #15
    کاربر دائمی آواتار Behnam6670
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    زیر آسمان آبی خدا
    پست
    496

    نقل قول: تقویم شمسی+DLL

    سلام دوستان یه dll جدید از کامپوننت BPersianCalender گذاشتم که به لیست ابزاراتون میتونید این dll رو اضافه کنید
    BPersianCalenderTextBox.jpg
    دات نت 3

  16. #16
    کاربر دائمی آواتار Behnam6670
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    زیر آسمان آبی خدا
    پست
    496

    نقل قول: تقویم شمسی+DLL

    نقل قول نوشته شده توسط Behnam6670 مشاهده تاپیک
    سلام دوستان یه dll جدید از کامپوننت BPersianCalender گذاشتم که به لیست ابزاراتون میتونید این dll رو اضافه کنید
    BPersianCalenderTextBox.jpg
    دات نت 3
    اگه وقتی اشاره گر داخل تکست باکس هست Enter رو هم فشار بدید ، تقویم ظاهر میشه
    اینم بگم که RightToLeft تکست باکس رو هم Yes کنید
    فایل های ضمیمه فایل های ضمیمه

  17. #17

    نقل قول: تقویم شمسی+DLL

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

  18. #18
    کاربر دائمی آواتار Behnam6670
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    زیر آسمان آبی خدا
    پست
    496

    نقل قول: تقویم شمسی+DLL

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

  19. #19
    کاربر دائمی
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    تهران
    پست
    212

    نقل قول: تقویم شمسی+DLL

    با تشکر از محبتت
    آموزش اون چی شد کی منتظر باشیم؟

  20. #20
    کاربر دائمی آواتار Behnam6670
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    زیر آسمان آبی خدا
    پست
    496

    نقل قول: تقویم شمسی+DLL

    سلام خدمت دوستان عزیز
    از تاخیری که پیش اومد معذرت میخوام تو این چند روز درگیری یسری کارای شخصی بودم.در هر صورت من طبق قولی که داده بودم میخوام آموزش ساخت این کامپوننتی که گذاشتم رو خدمت دوستان ارائه بدم تا دوستان بتونن خودشون این کامپوننت رو تولید کنن البته اینم بگم متاسفانه من نمیتونم همه آموزش رو یجا ارائه بدم بخاطر مشغله کاری که دارم ولی سعی میکنم هروقت فرصت کردم ادامه آموزش رو از سر بگیریم.
    بعد از آموزش ساخت این کامپوننت یه اموزش کوچیک هم میخوام داشته باشم برا دوستانی که با نحوه ذخیره تاریخ تو دیتابیس مشکل دارن و اغلب دوستان نمیدونن که به چه شکل باید تاریخ رو تو دیتابیس ذخیره کنند و تو جستجو هایی که در سطح فرمهاشون انجام میدن چجوری از بازه تاریخی استفاده کنند(اینو گفتم که یجورایی به این کامپوننت مربوط میشه بعدا ربطشو بهتون میگم)

    خب با اجازه بزرگترها بریم سر اصل مطلب
    آقا اصل مطلب اینه که ما میخوایم یه کامپوننت بسازیم که تاریخ شمسی رو تو پروژه هایی که تحت دانت نت هستن بتونه برا ما مدیریت کنه
    که نمونه هاشو دوستان زیاد دیدن(نمونه بارزش هم کنترل های تاریخ تو خود ویژوال استودیو هستش Month Calender,DatePicker)
    کامپوننتی که مام میخوایم تولید کنیم یه تکست باکس هستش که کاربر میتونه رو فرمش اضافه کنه و تو اون تقویم شمسی رو نمایش بده که روشهای انتخاب تاریخ به شکلهای مختلف امکان پذیر هستش
    مثلا با فشار دادن کلید Enter وقتی که داخل تکست باکس هستش یا از طریق کلیک روی دکمه مربوطه که داخل تکست باکس هستش(آیکون تقویم) و یا اینکه میتونه رو تکست باکس کلیک راست کنه و تاریخ روز رو انتخاب کنه یا تاریخ روز بعد و روز قبل رو هم بتونه انتخاب کنه تصویرشو شما میتونید ببینید
    pic1.png
    همینطور که توی عکس میبینید این کامپوننت تو این فرم استفاده شده است.منویی که میبینید همونی که بالا خدمتتون عرض کردم(همونی که با کلیک راست روی تکست باکس ظاهر میشه)
    خب اینی که تا اینجا دیدید تقریبا نصف کار بود
    این آموزش بصورت کلی دو بخش هستش:یه بخش نحوه ساختن فرم تقویم شمسی هستش و یه بخش دیگه آموزش ساخت کامپوننت تکست باکس شمسی هستش که فرم تاریخ شمسی رو نشون میده
    من اول نحوه ساختن فرم تقویم شمسی رو خدمت دوستان میگم بعد از اون آموزش ساختن تکست باکس رو خدمت دوستان ارائه میدم.
    pic2.png

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

    Shamsi-Miladi-SelectedDate
    Shamsi تاریخ شمسی انتخاب شده مثلا 1393/08/15 نوعش String
    Miladi تاریخ میلادی معادل تاریخ شمسی انتخاب شده نوعش DateTime
    SelectedDate هم تاریخ شمسی انتخاب شده بدون ممیز 13930815 نوعش هم String
    فایل های ضمیمه فایل های ضمیمه

  21. #21
    کاربر دائمی آواتار behnamgholipoor
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    رشت
    پست
    132

    نقل قول: تقویم شمسی+DLL

    سلام دوست عزیز خسته نباشید
    کامپوننت جالب و کاربردی هست.
    آموزش بعدی کی شروع میشه ؟

  22. #22
    کاربر دائمی آواتار Behnam6670
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    زیر آسمان آبی خدا
    پست
    496

    نقل قول: تقویم شمسی+DLL

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

    خب گفتم که آموزش دو قسمت داره
    1- روش ساخت فرم تقویم
    2- روش ساخت کامپوننت

    شروع میکنیم به ساخت فرم تقویم

    یه پروژه جدید از نوع WindowsApplication ایجاد کنید (اسم پروژه تون رو هم هرچی دلتون میخواد بدید من دادم BPersianCalender)

    Form1 رو به هر نامی اسمشو تغییر بدید که من اسم فرمم رو گذاشتم PCalender

    خاصیت های زیر رو برای فرم تنظیم کنید

    RightToLeft=True
    Font=Tahoma 8pt
    Text=تقویم شمسی | تاریخ انتخاب شده :
    Siize:341; 253
    FormBorderStyle:FixedToolWindow


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

    pCalender.png

    دوتا Button اضافه کنید خاصیت Text رو به ترتیب "امروز" و "بستن" بزارید با یه نامی که براش ست میکنید

    چهار تا Button هم اضافه کنید رو فرم برای ماه بعد و قبل و همچنین برا سال بعد و قبل خاصیت Name رو هم براش به ترتیب زیر ست کنید

    NextMont-PrevMonth
    NextYear-PrevYear

    خاصیت Cursor=Hand برای Button های کنترل ماه و سال
    تو این مرحله فرم شما باید به شکل زیر باشه


    1.png

    چهار تا Button رو میبینید که من براشون یه تصویری هم استفاده کردم (اینا دیگه سلیقه ای هستش)
    دوتا لیبیل "ماه" و "سال" رو هم که میبیند جهت نمایش ماه و سال جاری هستش به ترتیب خاصیت Name رو برابر با lblMounth و lblYaer تعیین کنید

    یه Panel اضافه کنید به فرم و توش 7 تا Lable اضافه کنید برای درج اسم روزهای هفته شنبه تا جمعه

    2.png

    روزهای هفته رو میتونید ببینید

    مرحله بعدی بدنه اصلی تقویم هستش که روزها قراره تو اون نشون داده بشه

    از لیست ابزارهاتون یدونه DataGridView بندازید رو فرم اسمشو بزارید dgCalander و بدون اینکه کاری بکنید وارد فایل Designer فرمتون بشید و کد زیر رو کپی کنید تو قمست Designer

    اگه متد زیر رو باز کنید
      private void InitializeComponent()
    میرسید به خط زیر

    // // dgCalander
    //


    کد های مربوط به دیتا گرید رو با کد زیر جایگزین کنید


    this.dgCalander.AllowUserToDeleteRows = false;
    this.dgCalander.AllowUserToResizeColumns = false;
    this.dgCalander.AllowUserToResizeRows = false;
    this.dgCalander.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMo de.Fill;
    this.dgCalander.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
    this.dgCalander.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.S unken;
    this.dgCalander.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle .Sunken;
    dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment. MiddleLeft;
    dataGridViewCellStyle1.BackColor = System.Drawing.Color.OliveDrab;
    dataGridViewCellStyle1.Font = new System.Drawing.Font("Tahoma", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(178)));
    dataGridViewCellStyle1.ForeColor = System.Drawing.Color.Maroon;
    dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
    dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
    dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
    this.dgCalander.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;
    this.dgCalander.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeig htSizeMode.DisableResizing;
    this.dgCalander.ColumnHeadersVisible = false;
    this.dgCalander.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
    this.c0,
    this.c1,
    this.c2,
    this.c3,
    this.c4,
    this.c5,
    this.c6});
    this.dgCalander.Cursor = System.Windows.Forms.Cursors.Default;
    dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment. MiddleCenter;
    dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Window;
    dataGridViewCellStyle2.Font = new System.Drawing.Font("Tahoma", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(178)));
    dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.ControlText;
    dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight;
    dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
    dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
    this.dgCalander.DefaultCellStyle = dataGridViewCellStyle2;
    this.dgCalander.Location = new System.Drawing.Point(0, 66);
    this.dgCalander.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4);
    this.dgCalander.MultiSelect = false;
    this.dgCalander.Name = "dgCalander";
    this.dgCalander.ReadOnly = true;
    this.dgCalander.RowHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle .Sunken;
    this.dgCalander.RowHeadersVisible = false;
    this.dgCalander.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSi zeMode.DisableResizing;
    this.dgCalander.RowTemplate.DefaultCellStyle.Align ment = System.Windows.Forms.DataGridViewContentAlignment. MiddleCenter;
    this.dgCalander.RowTemplate.Height = 18;
    this.dgCalander.RowTemplate.ReadOnly = true;
    this.dgCalander.RowTemplate.Resizable = System.Windows.Forms.DataGridViewTriState.False;
    this.dgCalander.Size = new System.Drawing.Size(323, 97);
    this.dgCalander.TabIndex = 0;
    this.dgCalander.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler( this.dgCalander_CellClick);
    this.dgCalander.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler( this.dgCalander_CellDoubleClick);
    this.dgCalander.CellEnter += new System.Windows.Forms.DataGridViewCellEventHandler( this.dgCalander_CellEnter);
    this.dgCalander.KeyDown += new System.Windows.Forms.KeyEventHandler(this.dgCaland er_KeyDown);
    //
    // c0
    //
    this.c0.HeaderText = "ش";
    this.c0.Name = "c0";
    this.c0.ReadOnly = true;
    //
    // c1
    //
    this.c1.HeaderText = "1ش";
    this.c1.Name = "c1";
    this.c1.ReadOnly = true;
    //
    // c2
    //
    this.c2.HeaderText = "2ش";
    this.c2.Name = "c2";
    this.c2.ReadOnly = true;
    //
    // c3
    //
    this.c3.HeaderText = "3ش";
    this.c3.Name = "c3";
    this.c3.ReadOnly = true;
    //
    // c4
    //
    this.c4.HeaderText = "4ش";
    this.c4.Name = "c4";
    this.c4.ReadOnly = true;
    //
    // c5
    //
    this.c5.HeaderText = "5ش";
    this.c5.Name = "c5";
    this.c5.ReadOnly = true;
    //
    // c6
    //
    this.c6.HeaderText = "ج";
    this.c6.Name = "c6";
    this.c6.ReadOnly = true;




    اگه به فرم برگردید دیتا گرید رو میبینید که با خصوصیاتی که شما براش در نظر گرفتید طراحی شده!

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

    3.png

    دوتا لیبل زیر دیتا گرید اضافه کنید
    و تکت هر کدوم رو به ترتیب برابر با تاریخ شمسی و تاریخ میلادی تعیین کنید
    جلوی این دوتا لیبیل دو تا لیبل دیگه بندازید که تاریخ شمسی و میلادی انتخاب شده رو نشون میده
    اسماشونو بزارید lblShamsi و lblMiladi
    خب طراحی فرم ما تموم شده حالا باید بریم سراغ کد نویسی

    رو فرم دابل کلیک کنید و کدهای زیر رو قبل از تابع سازنده فرم اضافه کنید
    کدهای مربوطi


    PersianCalendar pc = new PersianCalendar();//دسترسی به کتابخونه تاریخ شمسی
    private DateTime NowDate = DateTime.Now;// نگهدارنده تاریخ میلادی جاری
    static int mounthName;//نام ماه
    static int YearName;//نام سال
    int selectedYear, selectdMonth, selectedDay;//روز-ماه-سال انتخاب شده
    int rowIndex, columnIndex;//ایندکس ستون و ایندکس سطر
    string selectedShamsiDate;//تاریخ شمسی انتخاب شده
    DateTime selectedMiladiDate;//تاریخ میلادی انتخاب شده
    shamsiCalander objshamsiCalander = new shamsiCalander();//کلاس نگهدارنده تاریخ



    کلاس shamsiCalander رو به صورت زیر داخل فرم اضافه کنید

    public class shamsiCalander
    {
    public string ShamsiDate { get; set; }
    public DateTime MiladiDate { get; set; }
    }


    بعد از InitializeComponent دو خط کد زیر رو اضافه کنید که جهت نگهداری ماه و سال هستش


    mounthName = pc.GetMonth(NowDate);
    YearName = pc.GetYear(NowDate);




    داخل رویداد Load فرم قطعه کد زیر رو اضافه کنید


    this.Text += " " + MiladiToShamsi(DateTime.Now);




    FillCalander();
    FindCurrentDate();
    getDates();




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

    تابع MiladiToShamsi رو به فرمتون اضافه کنید




    public string MiladiToShamsi(DateTime Mdate)
    {
    string Result = pc.GetYear(Mdate).ToString();
    string Month = Convert.ToString(pc.GetMonth(Mdate));
    string day = Convert.ToString(pc.GetDayOfMonth(Mdate));
    if (Month.Length == 1)
    Month = "0" + Month;
    if (day.Length == 1)
    day = "0" + day;
    Result += "/" + Month + "/" + day;
    return Result;
    }




    کار این تابع اینه که شما یه تاریخ میلادی رو بهش پاس میکنید و معادل شمسی اون رو بصورت رشته براتون برمی گردونه

    کد زیر رو به قسمت Load فرمتون اضافه کنید

    this.Text += " " + MiladiToShamsi(DateTime.Now);


    یه متد به نام FindCurrentDate اضافه کنید به صورت زیر



    private void FindCurrentDate()
    {
    int tYear, tMonth, tDay = 0;
    tYear = pc.GetYear(DateTime.Now);
    tMonth = pc.GetMonth(DateTime.Now);
    tDay = pc.GetDayOfMonth(DateTime.Now);
    mounthName = tMonth;
    YearName = tYear;
    lblYear.Text = tYear.ToString();
    lblMounth.Text = getMounth(tMonth);
    ResetCalender();
    FillCalander();
    for (int i = 0; i <= 4; i++)
    {
    for (int x = 0; x < 7; x++)
    {
    if (dgCalander.Rows[i].Cells["c" + x.ToString()].Value.ToString() == tDay.ToString())
    {
    dgCalander.ClearSelection();
    dgCalander.Rows[i].Cells["c" + x.ToString()].Selected = true;
    }
    }
    }
    }


    تابع getMounth رو هم به فرم اضافه کنید

    private string getMounth(int Mounth)
    {
    string MounthName = string.Empty;
    switch (Mounth)
    {
    case 1: MounthName = "فروردین";
    break;
    case 2: MounthName = "اردیبهشت";
    break;
    case 3: MounthName = "خرداد";
    break;
    case 4: MounthName = "تیر";
    break;
    case 5: MounthName = "مرداد";
    break;
    case 6: MounthName = "شهریور";
    break;
    case 7: MounthName = "مهر";
    break;
    case 8: MounthName = "آبان";
    break;
    case 9: MounthName = "آذر";
    break;
    case 10: MounthName = "دی";
    break;
    case 11: MounthName = "بهمن";
    break;
    case 12: MounthName = "اسفند";
    break;
    }
    return MounthName;
    }



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


    خب دوستان اگه اشکالی نداشته باشه من باید ادامه آموزش رو بندازم برای روزهای بعد
    انشالله اگه این آموزش برا دوستان مفید بوده باشه و دوستان استقبال کنند ادامه آموزش رو تو روزهای بعدی در خدمتتون خواهم بود.
    فعلا بای.........
    آخرین ویرایش به وسیله Behnam6670 : دوشنبه 03 آذر 1393 در 17:43 عصر

  23. #23

    نقل قول: تقویم شمسی+DLL

    انشالله که ادامه داشته باشه

  24. #24
    کاربر دائمی
    تاریخ عضویت
    اسفند 1391
    پست
    118

    نقل قول: تقویم شمسی+DLL

    سلام اقایBehnam6670 احححححححححسنت
    من مبتدی ام اااا نمیخام ایراد الکی بگیرم ولی احساس میکنم از وقتی اینو گذاشتم سرعت برنامه ام اومده پایین! نمیدونم شایدم من توهم زدم ولی در کل دستت درد نکنه عاقا خیلی مرسی(اصن کف کردما، مشخصه؟ )
    آخرین ویرایش به وسیله zahra1372 : چهارشنبه 21 آبان 1393 در 22:05 عصر

  25. #25
    کاربر دائمی آواتار Behnam6670
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    زیر آسمان آبی خدا
    پست
    496

    نقل قول: تقویم شمسی+DLL

    نقل قول نوشته شده توسط zahra1372 مشاهده تاپیک
    سلام اقایBehnam6670 احححححححححسنت
    من مبتدی ام اااا نمیخام ایراد الکی بگیرم ولی احساس میکنم از وقتی اینو گذاشتم سرعت برنامه ام اومده پایین! نمیدونم شایدم من توهم زدم ولی در کل دستت درد نکنه عاقا خیلی مرسی(اصن کف کردما، مشخصه؟ )
    دوست عزیر این کامپوننت تو چند تا نرم افزار خیلی حرفه ای داره استفاده میشه که تاریخ جز آیتم های خاصش هستش و هیچ مشکلی نداشته تا الان.نه تنها سرعت رو پایین نیاورده بلکه بخاطر حجم فوق العاده پایینش خیلی هم سرعت رو بالا میبره.شاید برا شما دلیل دیگه ای داشته باشه

  26. #26
    کاربر دائمی
    تاریخ عضویت
    آذر 1389
    محل زندگی
    تبریز - شهرستان میانه
    سن
    33
    پست
    212

    نقل قول: تقویم شمسی+DLL

    سلام دوستان

    ممنون میشم دوست عزیز Behnam6670 سورس نحوه صفحه بندی دیتاگرید که اینجا تو این تصویر هست رو برام بزارید من خودم با یه روشی ساختم کار میکنه ولی این بنظرم بهتر اومد


  27. #27
    کاربر دائمی آواتار Behnam6670
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    زیر آسمان آبی خدا
    پست
    496

    نقل قول: تقویم شمسی+DLL

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

    ممنون میشم دوست عزیز Behnam6670 سورس نحوه صفحه بندی دیتاگرید که اینجا تو این تصویر هست رو برام بزارید من خودم با یه روشی ساختم کار میکنه ولی این بنظرم بهتر اومد

    دوست عزیز شما میتونی از BindingSource استفاده کنی و براش از یه بBindingNavigator استفاده کنی
    اینی که میبینی BindingNavigator هستش

  28. #28
    کاربر دائمی
    تاریخ عضویت
    اسفند 1391
    پست
    118

    نقل قول: تقویم شمسی+DLL

    یه اشکال خییییییییییلیییییییی کوچیک
    taghvim.jpg
    باز هم تشکرررر خدا خیردون بده
    بهره بردم
    اللهم صل علی محمد و ال محمد...

  29. #29
    کاربر دائمی آواتار Behnam6670
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    زیر آسمان آبی خدا
    پست
    496

    نقل قول: تقویم شمسی+DLL

    نقل قول نوشته شده توسط zahra1372 مشاهده تاپیک
    یه اشکال خییییییییییلیییییییی کوچیک
    taghvim.jpg
    باز هم تشکرررر خدا خیردون بده
    بهره بردم
    اللهم صل علی محمد و ال محمد...
    سلام
    با عرض شرمندگی اینو یادم رفته بردارم
    خودم داشتم تست میکردم مونده
    اینی که الان گذاشتم آخرین ورژنه فعلا
    رو کلیک راستش یسری ایتم اضافه کردم
    فایل های ضمیمه فایل های ضمیمه

  30. #30
    کاربر دائمی
    تاریخ عضویت
    اسفند 1391
    پست
    118

    نقل قول: تقویم شمسی+DLL

    نقل قول نوشته شده توسط Behnam6670 مشاهده تاپیک
    سلام
    با عرض شرمندگی اینو یادم رفته بردارم
    خودم داشتم تست میکردم مونده
    اینی که الان گذاشتم آخرین ورژنه فعلا
    رو کلیک راستش یسری ایتم اضافه کردم
    مرسی دست شما درد نکنهههههه. الان که این جدیدرو استفاده کردم اون مسئله ی پایین اومدن سرعت 1s که گفتم رفع شد!!! خودمم نفهمیدم از چی بود!!!
    بزارین یه نظرم بدم به نظرم بالاش اینطوری باشه بهتره
    SC20141113-153946.png
    گزینه های جدیدوووووووووو
    آخرین ویرایش به وسیله zahra1372 : پنج شنبه 22 آبان 1393 در 22:41 عصر

  31. #31
    کاربر دائمی آواتار Behnam6670
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    زیر آسمان آبی خدا
    پست
    496

    نقل قول: تقویم شمسی+DLL

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

  32. #32
    مدیر بخش آواتار danialafshari
    تاریخ عضویت
    تیر 1387
    محل زندگی
    هر کجا هستم باشم آسمان مال من است
    پست
    2,909

    نقل قول: تقویم شمسی+DLL

    با سلام
    مشکلاتی در کامپوننت دیدم گفتم مطرح کنم که برطرفش کنید
    البته آخری رو فقط مشاهده کردم
    یکی اینکه بعد از select تاریخ 3 رقم اول پشت png مخفی میشن
    و بعدی اینکه سطر های گریدتون کافی نیست و وقتی که روز اول از پنجشنبه یا جمعه شروع میشه روز 30 یا 31 ناپدید میشه
    مثلا شهریور 1392- شهریور 1387 - شهریور 1386 - مرداد 1394 و ...
    موفق باشید

  33. #33
    کاربر دائمی آواتار Behnam6670
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    زیر آسمان آبی خدا
    پست
    496

    نقل قول: تقویم شمسی+DLL

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

    امیدورازم این اموزشا بدرد دوستان بخوره

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

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

    mounthName = pc.GetMonth(NowDate);
    YearName = pc.GetYear(NowDate);



    گفتم که کار این دوتا متغیر نگه داشتن ماه و سال جاری هستش که وقتی فرم لود میشه مقدار دهی میشه

    خب روی دکمه سال بعد کلیک کنید و کد زیر رو براش بنویسید

    private void btnNextY_Click(object sender, EventArgs e)
    {
    NextYear();
    }

    و اینم متد NextYear

    private void NextYear()
    {
    YearName++;
    lblYear.Text = YearName.ToString();
    }

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

    private void btnPrevY_Click(object sender, EventArgs e)
    {
    PrevYear();

    }



    private void PrevYear()
    {
    YearName--;
    lblYear.Text = YearName.ToString();
    }


    حالا فرم رو Run کنید میبینید که براحتی میتونید از طریق دکمه های زیر سال رو کنترل کنید
    ضمیمه 125632

    خب ماه هم به شکل زیر میتونید کدهارو به ماه بعد و قبل اضافه کنید

    private void btnNextM_Click(object sender, EventArgs e)
    {
    if (mounthName >= 12)
    {
    mounthName = 0;
    NextYear();
    }
    mounthName++;
    lblMounth.Text = getMounth(mounthName);

    }



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

    private void btnPrevM_Click(object sender, EventArgs e)
    {
    if (mounthName <= 1)
    {
    mounthName = 13;
    PrevYear();
    }
    mounthName--;
    lblMounth.Text = getMounth(mounthName);

    }



    خب همینطور که میبینید وقتی که شما روی ماه بعد کلیک میکنید وقتی ماه آخر سال میشه که همون مساوی 12 هستش و شما یکبار دیگه اگه روی دکمه ماه بعد کلیک کنید باید سال بعد نشون داده بشه که این مسئله از طریق یه دستور شرطی کنترل شده است و همچنین برعکس این قضیه هستش یعنی وقتی شما دارید ماه قبل رو میزنید تا میرسید به فروردین اگه بواید باز روی ماه قبل کلیک کنید باید یک واحد از سال کم بشه که میبیند تو متد مربوطه کنترل شده
    دوستان متد getMounth هم که تو جلسه قبل معرفی کردم که مقدار عددی ماه رو براش ارسال مکنید و معادل رشته رو که همون ماه هستش رو براتون برمیگردونه
    یبار فرم رو اجرا کنید و کارکرد کدهای که نوشتید رو ببینید

  34. #34

    نقل قول: تقویم شمسی+DLL

    سلام ممنون از شما به خاطر ارائه این کامپوننت عالی :)
    فقط یه درخواست امکانش هست در پنجره نمایش تاریخ عبارت فارسی "بستن" به "درج" تغییر پیدا کنه !؟

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

  35. #35
    کاربر دائمی آواتار Behnam6670
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    زیر آسمان آبی خدا
    پست
    496

    نقل قول: تقویم شمسی+DLL

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

    Years.jpg

    Month.jpg

    فقط کافی رو لیست کلیک کنید
    آخرین ویرایش به وسیله Behnam6670 : یک شنبه 25 آبان 1393 در 09:56 صبح

  36. #36
    کاربر دائمی آواتار Behnam6670
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    زیر آسمان آبی خدا
    پست
    496

    نقل قول: تقویم شمسی+DLL

    سلام
    آره درج هم خوبه
    اون آیتمی هم که گفتی چک میکنم دوست عزیز

  37. #37
    کاربر دائمی آواتار moharam1370
    تاریخ عضویت
    آذر 1389
    محل زندگی
    قم
    پست
    121

    نقل قول: تقویم شمسی+DLL

    سلام ، اگه بشه فونتش تغییر داد خیلی جالب میشد ...
    البته یه نظره ...

  38. #38

    نقل قول: تقویم شمسی+DLL

    ممنون اقا بهنام اما کو لینک دانلود ؟!!

    یه پیشنهاد البته اگه امکانش باشه ، میشه یه نوع خروجی تعریف بشه تا اگه کاربری تاریخ 1393/08/20 را انتخاب کرد یه خروجی کامپوننت هم باشه به صورت" 20 آبان 1393 " البته با چند خط کد میشه اجرا کرد گفتم جز خروجی کامپوننت باشه جالب میشه :) البته یه پیشنهاده

    باتشکر :)

  39. #39
    کاربر دائمی آواتار Behnam6670
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    زیر آسمان آبی خدا
    پست
    496

    نقل قول: تقویم شمسی+DLL

    نقل قول نوشته شده توسط dashti011 مشاهده تاپیک
    ممنون اقا بهنام اما کو لینک دانلود ؟!!

    یه پیشنهاد البته اگه امکانش باشه ، میشه یه نوع خروجی تعریف بشه تا اگه کاربری تاریخ 1393/08/20 را انتخاب کرد یه خروجی کامپوننت هم باشه به صورت" 20 آبان 1393 " البته با چند خط کد میشه اجرا کرد گفتم جز خروجی کامپوننت باشه جالب میشه :) البته یه پیشنهاده

    باتشکر :)
    اینم لینک دانلود
    فایل های ضمیمه فایل های ضمیمه

  40. #40

    نقل قول: تقویم شمسی+DLL

    سلام ممنون خیلی عالیه

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

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

  1. فارسی کردن صفحه کلید و تقویم شمسی با فایل DLL
    نوشته شده توسط mohsenna30ri در بخش Access
    پاسخ: 18
    آخرین پست: دوشنبه 09 اسفند 1400, 12:02 عصر
  2. تقویم شمسی
    نوشته شده توسط kia1349 در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 1
    آخرین پست: دوشنبه 15 فروردین 1384, 23:35 عصر
  3. یه کامپوننت تقویم شمسی
    نوشته شده توسط tayebeh در بخش VB.NET
    پاسخ: 1
    آخرین پست: سه شنبه 04 اسفند 1383, 18:14 عصر
  4. بازم همون مشکل تقویم شمسی و میلادی
    نوشته شده توسط vbprogramer در بخش برنامه نویسی در 6 VB
    پاسخ: 13
    آخرین پست: دوشنبه 11 آبان 1383, 07:50 صبح

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

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