ورود

View Full Version : تقویم شمسی برای WPF



Davood_amega
دوشنبه 18 مرداد 1389, 12:37 عصر
متاسفانه MIcrosoft تقویم شمسی را در Visual Studio 2010 قرار نداد دوستان یه کارهای انجام داده اند اما کامل نیست یا اینکه مشکلات خاص خود را دارد مثل نمونه زیر :

http://mds-soft.persianblog.ir/post/70/

در حال گشتن همچین تقویمی بودم که این نمونه (http://mrtaikandi.wordpress.com/2010/05/29/silverlight-4-persian-calendar-and-datepicker/) را پیدا کردم که با Silverlight طراحی شده و برای سایتها استفاده می شود اما برنامه ام وب سایت نیست .
1- آیا می توانم از این فایل استفاده کنم ؟
2- چطور این تقویم را به پروژه ام اضافه کنم ؟
3- تقویم دیگری مثل همین نمونه برای WPF ( برنامه Application ) وجود ندارد ؟

مهدی فرزاد
دوشنبه 18 مرداد 1389, 13:41 عصر
سلام
ايميل بدهيد تا برايتان ايميل كنم

Davood_amega
دوشنبه 18 مرداد 1389, 13:58 عصر
خیلی خیلی ممنون

مهدی فرزاد
دوشنبه 18 مرداد 1389, 16:42 عصر
این حجمش کم بود همین جا برات گذاشتم
این Dll ها توابع و کلاسهای زیادی برای کار با تقویم فارسی و حتی تبدل عدد به نوشته دارن
سورس کاملش رو برات امیل میکنم

رضا عربلو
دوشنبه 18 مرداد 1389, 19:29 عصر
http://barnamenevis.org/forum/showpost.php?p=843380&postcount=10

Davood_amega
چهارشنبه 20 مرداد 1389, 18:17 عصر
بنده به یک Dll یا چیز دیگه ای مثل اون احتیاج دارم که ComboBox های خودم از اون استفاده کنند .
اگر از Calender خود WPF استفاده کنم هم خیلی خوب میشه اینجا (http://msdn.microsoft.com/en-us/library/ms788718.aspx) هم یه چیزای نوشته .
مثلا با اضافه کردن xml:lang="Fa-IR" به Window خودمون Calender به صورت زیر می شود .

http://barnamenevis.org/forum/attachment.php?attachmentid=54002&stc=1&d=1281537687


این حجمش کم بود همین جا برات گذاشتم
این Dll ها توابع و کلاسهای زیادی برای کار با تقویم فارسی و حتی تبدل عدد به نوشته دارن
سورس کاملش رو برات امیل میکنم
متاسفانه Object که اضافه می شود از لحاظ ظاهزی با فرمهامون همخوانی ندارد و ضمنا قابلیت ویرایش ندارد و مشکل دیگری که دارد این است که توانایی ندارد که تاریخ خاصی را از ما بگیرد و نمایش دهد .

http://barnamenevis.org/forum/showpost.php?p=843380&postcount=10
نتونستم روی فرمهای خودمون بذارم اگر یه راهنمایی بکنید ممنون خواهم شد .

مهدی فرزاد
چهارشنبه 20 مرداد 1389, 19:10 عصر
http://barnamenevis.org/forum/attachment.php?attachmentid=54002&stc=1&d=1281537687


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

نتونستم روی فرمهای خودمون بذارم اگر یه راهنمایی بکنید ممنون خواهم شد .
اون چیزی که من برای شما گذاشتم و اون چیزی که آقای عربلو گذاشتن یکی هست و قابلیت هاش کامله به مثال های خودش و سورس برنامش نگاه کنید و ببینید چطوری استفاده میشه
قابلیت ویرایش ظاهر هم داره من خودم این کار رو نکردم ولی توی سورس برنامش در قسمت WPF Demo این کار رو انجام داده
مثالش رو برات میگذارم سورسش هم که داری
راستی موقع اجرای مثال یک error رو ی صفحه میاد بدون اینکه Ok کنی برو به پنجره برنامه و اونو روی حالت فارسی بگذار و با برنامه کار کن error رو OK نکن

Davood_amega
پنج شنبه 21 مرداد 1389, 10:22 صبح
اما هر کاری می کنم نمیشه !
Dll ها را اضافه می کنم اما نمیتونم از کدا سر در بیارم !
لطفا یه مثال بذارید که یه ComboBox با تقویم شمسی داشته باشد.( البته در WPF)

مهدی فرزاد
پنج شنبه 21 مرداد 1389, 16:59 عصر
مثالی که توی پست شماره 4 گذاشتم داره(Test) اگه منظور شما چیز دیگست دقیق تر توضیح بدید.

Davood_amega
جمعه 22 مرداد 1389, 09:45 صبح
این ComboBox مربوط به DLL هاست . می خواستم طبق ComboBox که خودم طراحی کردم ، روش های اتصال به DLLها را بدونم .
یه سوال دیگه این که این آدرس های که در Window هست چیه ؟
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

مهدی فرزاد
جمعه 22 مرداد 1389, 13:41 عصر
این ComboBox مربوط به DLL هاست . می خواستم طبق ComboBox که خودم طراحی کردم ، روش های اتصال به DLLها را بدونم .
یه سوال دیگه این که این آدرس های که در Window هست چیه ؟
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
این جواب سئوال دوم
http://barnamenevis.org/forum/showpost.php?p=501061&postcount=15

برای سئوال اول چون ضمیمه سایت کار نمیکنه برات ایمیل کردم توی این نمونه ظاهر combo رو عوض کردم همچنین دقت کن ظاهر Combo برنامه و Combo تقویم یکی هستن و همچنین ظاهر Button تقویم و Button برنامه
Microsoft Expression Blend بلد باشی کارت راحت تر میشه

saeed1386
دوشنبه 25 مرداد 1389, 09:20 صبح
این کامپوننت را خودم طراحی کردم .
http://up.iranblog.com/Files/2d64174e32ac4a1aaada.png



http://up.iranblog.com/Files/6adb7101b59c4a29b3f4.png
قابلیتهای زیادی هم داره
مثل:


· امکان تغییر سایز کامپوننت
· امکان تعیین تاریخ امروز (پیش فرض از تاریخ سیستم استفاده میکند)
· امکان تغییر رنگ زمینه روزها
· تغییر فونت روزها
· تعیین تاریخ انتخاب شده به صورت برنامه نویسی
· دریافت تاریخ انتخاب شده توسط کاربر
· دارای لیست تاریخ های پر رنگ و بخصوص (BoldedDates)
· اضافه و حذف از لیست تاریخ های پر رنگ
· امکان ایجاد رویداد های مختلف برای روزها مثل MouseClick , MouseDoubleClick , ...


همراه فایل یه pdf هست که تمام امکاناتش توضیح داده شده.
از آدرس زیر میتونی دریافت کنی:
http://behsoft.blogfa.com/post-4.aspx (http://behsoft.blogfa.com/post-4.aspx)
یه نمونه پروژه (windows Application) با C#‎‎ هم نوشتم. آدرسش:
http://behsoft.blogfa.com/post-5.aspx (http://behsoft.blogfa.com/post-5.aspx)

مهدی فرزاد
دوشنبه 25 مرداد 1389, 10:31 صبح
این کامپوننت را خودم طراحی کردم .


(http://behsoft.blogfa.com/post-5.aspx)


سلام آقا سعيد
بابت اينكه اين تقويم رو براي استفاده دوستان معرفي كرديد متشكرم
ولي فكر ميكنم اين تقويم تحت WinApp باشه و براي WPF كارايي نداره ؟ درسته؟
اگه بتونيد يك نسخه از اون رو تحت WPf هم درست كنيد معركه ميشه
بازم متشكر

saeed1386
چهارشنبه 27 مرداد 1389, 14:16 عصر
سلام آقا سعيد
بابت اينكه اين تقويم رو براي استفاده دوستان معرفي كرديد متشكرم
ولي فكر ميكنم اين تقويم تحت WinApp باشه و براي WPF كارايي نداره ؟ درسته؟
اگه بتونيد يك نسخه از اون رو تحت WPf هم درست كنيد معركه ميشه
بازم متشكر[/right]

خیلی ممنون
من خیلی با WPF آشنایی ندارم . البته تاحدودی کار کردم.
اگه تونستم بنویسمش حتما براتون میذارم.

اطلاع نداشتم که dll های winApp در WPF کارایی نداره.

Davood_amega
یک شنبه 14 شهریور 1389, 14:19 عصر
سلام و ممنون از دوستانی که این پستو دنبال می کنن .
بالاخره یه Calender شمسی عالی که دقیقا مثل میلادیه( با کلیک بر روی ماه ، ماههای سال مورد نظر را می آورد و با کلیک بروی سال ، دهه که این سال قرار دارد را می آورد ) پیدا کردم .
اینم لینکش :

Arash Sahebolamri (http://www.codeproject.com/KB/datetime/PersianDateAndWpf.aspx) (http://www.codeproject.com/KB/datetime/PersianDateAndWpf.aspx)

از این دوست هم میهنی باید ممنون باشیم که این کار خیلی قشنگ را طراحی کردن .
کافیه فقط فایل PersianDateControl.dll را به Toolbox اضافه کنید .

مهدی فرزاد
یک شنبه 14 شهریور 1389, 15:14 عصر
سلام و ممنون از دوستانی که این پستو دنبال می کنن .
بالاخره یه Calender شمسی عالی که دقیقا مثل میلادیه( با کلیک بر روی ماه ، ماههای سال مورد نظر را می آورد و با کلیک بروی سال ، دهه که این سال قرار دارد را می آورد ) پیدا کردم .
اینم لینکش :

Arash Sahebolamri (http://www.codeproject.com/KB/datetime/PersianDateAndWpf.aspx)


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



کافیه فقط فایل PersianDateControl.dll را به Toolbox اضافه کنید .




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

ولی ای کاش توابع و کلاسهایی متنوع که در تقویمی که من معذفی کردم رو هم داشت که دیگه عالی میشد
البته میشه از کلاس های اون تقویم در کنار توقیمی که شما معرفی کردید استفاده کرد
متشکرم

lastmory
یک شنبه 14 شهریور 1389, 22:23 عصر
سلام به همه ی دوستان.من احتیاج ضروری دارم به کد این تاریخ فارسی...خودم dll دارم.اما کدشو میخوام...ممنون از لطف همه....:لبخندساده:

Davood_amega
دوشنبه 15 شهریور 1389, 00:12 صبح
کدش هم در لینک زیر موجوده !

Arash Sahebolamri (http://www.codeproject.com/KB/datetime/PersianDateAndWpf.aspx)

Davood_amega
چهارشنبه 07 مهر 1389, 19:01 عصر
سلامی دوباره
چند تا از مشکلاتی که این Componnent داره :
1- بعد از کلیک روی تاریخ موردنظر در DatePicker ، کادری که باز شده بسته نمی شود و باید روی یه جای در فرم کلیک کنیم . که با اصلاح کد مشکل حل شد . Dll اش رو در لینک زیر می توانید دانلود کنید .

لینک دانلود PersianDateControls (http://barnamenevis.org/forum/attachment.php?attachmentid=57339&stc=1&d=1285775460)

از Mehdi550u ممنون که یه تلنگری بهم انداخت که کدو تغییر بدم .
2- با Tab رابطه خوبی نداره و نمی دونم چرا تو فرمهام TabIndex بالاترینم باشه بازم آخرین Object ای است که روش می ریم .
3- تبدیل شمسی داره ولی تبدیل میلادی نداره و تو چند از فرمهام مشکل خوردم و با FarsiLibrary.Utils هم که خواستم کار کنم SelectedDate نتونست باهاش کار کنه البته اگر خصویت Text را پر کنم مشکلی نداره .
4- با تغییر اندازه بعضی مواقع دچار مشکل می شود و فونتها بهم میریزه !

arash.sahebolamri
شنبه 10 مهر 1389, 14:52 عصر
سلام به همگی

از لطفتون و feedback تون ممنونم. مخصوصا جناب Davood_Amega.
مشکلاتی رو که گفتین سعی می کنم حل کنم. فقط یکی 2 تا موردو فعلا توضیح بدم:

-تبدیل شمسی به میلادی تو PersianDate هست، با متد () ToDateTime. تبدیل میلادی به شمسی هم همینطور. یه constructor داره که DateTime می گیره. یعنی اگه مثلا می خواین SelectedDate تو PersianDatePicker یا PersianCalendar معادل یه تاریخ میلادی باشه:

DateTime d=...;myDatePicker.SelectedDate=new PersianDate(d);اگه منظورتون چیز دیگه ای هست دقیق تر بگین لطفا.

-من که با تغییر اندازه مشکلی ندیدم. اگه منظورتون نشون داده نشدن نصفه پایینی عدد هاس به نظرم مشکل از فونته. چون با فونت های انگلیسی این مشکلو نداره.

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

Davood_amega
شنبه 10 مهر 1389, 18:05 عصر
آرش جان بهت خیرمقدم میگم ، انشاالله که تو این سایت بتونیم از اطلاعات هم استفاده کنیم (البته اطلاعات بنده حداقل خیلی کمه اما دوستان بسیار قوی هم در جمعمون هستند )
در مورد فونت کاملا کاملا حق با شماست تو انتخاب Size فونت کمی بی دقتی کردم چون می خواستم اون تاریخی که در حال حاضر کاربر میبینه بزرگتر باشه اما کادری که باز میشه رو نادیده گرفته بودم اما مشکل زیر را هم چک کن:

با Tabرابطه خوبی نداره و نمی دونم چرا تو فرمهام TabIndex بالاترینم باشه بازم آخرین Object ای است که روش می ریم.
با تشکر

Davood_amega
شنبه 10 مهر 1389, 18:40 عصر
-تبدیل شمسی به میلادی تو PersianDate هست، با متد () ToDateTime. تبدیل میلادی به شمسی هم همینطور. یه constructor داره که DateTime می گیره. یعنی اگه مثلا می خواین SelectedDate تو PersianDatePicker یا PersianCalendar معادل یه تاریخ میلادی باشه:

DateTime d=...;myDatePicker.SelectedDate=new PersianDate(d);اگه منظورتون چیز دیگه ای هست دقیق تر بگین لطفا.

عرض کنم که به چه صورتی DateTime هم شمسی می گیره و هم میلادی . متد ToDateTime مربوط به PersianDate هم فقط تاریخ شمسی را میاره !
اگه یهمثالی بذارید ممنون میشم .

arash.sahebolamri
یک شنبه 11 مهر 1389, 10:40 صبح
عرض کنم که به چه صورتی DateTime هم شمسی می گیره و هم میلادی . متد ToDateTime مربوط به PersianDate هم فقط تاریخ شمسی را میاره !
اگه یهمثالی بذارید ممنون میشم .

DateTime که شمسی نمیگیره. اگه میخوای تاریخ شمسی رو میلادی کنی کافیه از همون متد ToDateTime تو PersianDate استفاده کنی که تاریخ میلادی بر می گردونه نه شمسی، یعنی DateTime بر می گردونه.


PersianDate myBirthDay = new PersianDate(1366, 9, 5);
DateTime myGregorianBirthDay = myBirthDay.ToDateTime();

همینطور اگه میخوای معادل میلادی تاریخ شمسی انتخاب شده رو از PersianCalendar یا PersianDatePicker در بیاری :


DateTime d=persianDatePicker.SelectedDate.ToDateTime();

Davood_amega
یک شنبه 11 مهر 1389, 11:19 صبح
ممنون در مورد PersianDateControls شما هم یه تغییر کوچیک ایجاد کردم که Datepicker کادرش بسته بشه ! قبلا وقتی تاریخ را انتخاب می کردیم کادر بسته نمی شد و باید یک جا کلیک می کردیم تا کادر بسته بشه !
اما همچنان مشکل TabIndex وجود داره .

arash.sahebolamri
یک شنبه 11 مهر 1389, 11:35 صبح
مشکل tab و بسته نشدن popup رو درست کردم. تو فایل attach شده dll های اصلاح شده رو گذاشتم. هنوز تو CodeProject آپلودشون نکردم.

Davood_amega
یک شنبه 11 مهر 1389, 11:54 صبح
ممنون خیلی عالی شد !
اگه بازم مشکلی دیدم آرش جان اطلاع میدم .

Davood_amega
یک شنبه 11 مهر 1389, 12:02 عصر
یه نکته دیگه اینکه اگر بتونی Dll مربوط تبدیل تاریخ را یه کم دستکاری کنی فکر کنم خیلی بهتر بشه !
در فایل ضمیمه یک DLL کامل به نام FarsiLibrary را قرار دادم که فایل Help هم همراهش هست .

Davood_amega
یک شنبه 11 مهر 1389, 12:40 عصر
ضمنا یه سوال دیگه برای تبدیل شمسی به میلادی و برعکس نمیشه رشته وارد کرد ؟
و اینکه تبدیل تاریخها صددرصد تست شده ؟

arash.sahebolamri
یک شنبه 11 مهر 1389, 13:11 عصر
تاریخ ها رو از روز ازل تا ابد همه رو چک کردم.
برای رشته تاریخ شمسی از() PersianDate.Parse یا() PersiandDate.TryParse استفاده کن. مثل تبدیل string به int یا double یا DateTime.
برای رشته میلادی هم اول DateTime شون کن. بعد با ()new PersianDate به شمسی تبدیلشون کن.

Davood_amega
یک شنبه 11 مهر 1389, 16:29 عصر
بنده می خوام یه رشته میلادی را به شمسی و یه رشته شمسی را به میلادی تبدیل کنم اما همچنان سر تبدیل مشکل دارم .
درمورد تبدیل شمسی به میلادی مشکلی نیست ولی برعکس مشکل دارم . فقط برای استفاده در بانک می خواهم که دیگهDLL دیگه ای برای تبدیل میلادی به شمسی استفاده نکنم .

arash.sahebolamri
یک شنبه 11 مهر 1389, 17:17 عصر
بنده می خوام یه رشته میلادی را به شمسی و یه رشته شمسی را به میلادی تبدیل کنم اما همچنان سر تبدیل مشکل دارم .
درمورد تبدیل شمسی به میلادی مشکلی نیست ولی برعکس مشکل دارم . فقط برای استفاده در بانک می خواهم که دیگهDLL دیگه ای برای تبدیل میلادی به شمسی استفاده نکنم .

برای تبدیل رشته میلادی به شمسی:


string dateStr=...;
string persianDateStr= (new PersianDate(DateTime.Parse(dateStr))).ToString();

arash.sahebolamri
چهارشنبه 14 مهر 1389, 10:26 صبح
سلام دوستان.
نسخه جدید PersianCalendar رو تو Code Project گذاشتم. دوباره آدرسش اینه:


http://www.codeproject.com/KB/datetime/PersianDateAndWpf.aspx

Davood_amega
چهارشنبه 14 مهر 1389, 15:13 عصر
آیا تغییر دیگری هم نسبت به اون فایلی که در همین سایت قرار داده بودی داشته !

arash.sahebolamri
شنبه 17 مهر 1389, 16:38 عصر
آیا تغییر دیگری هم نسبت به اون فایلی که در همین سایت قرار داده بودی داشته !
نمی دونم. فکر نکنم.

tk2005730
شنبه 22 آبان 1389, 07:32 صبح
سلام دستت درد نکنه کنترل خوبی شده. فقط این قابلیت را هم بذار که کنترل بتونه خالی باشه یعنی هیچ تاریخی را انتخاب نکنیم.
ممنون

Elham.M
شنبه 21 خرداد 1390, 09:15 صبح
سلام بی زحمت اگه برای من هم بدی ممنون می شم آدرس ایمیلم Shekari.1740@gmail.com

آقای X
چهارشنبه 06 مهر 1390, 11:50 صبح
سلام و خسته نباشید
یه سوال داشتم در مورد کنترل
SelectDate این کنترل را باید باچه نوعی بایند کنم ؟
آخه با چندتا امتحان کردم کار نکرد
البته با persiandate هم امتحان کردم ولی خاصیت text اون تغییر نمی کرد
من با wpf و mvvm کار می کنم
اگه یه مثال بدین ممنون میشم

Afshin160
یک شنبه 18 مرداد 1394, 17:34 عصر
سلام . از دوستانی که از این برنامه استفاده کردن یه سوال داشتم .؟
این Calendar را چطور بزرگ کردن ؟
اون Calendar که تو DatePicker میاد را می گم ؟

Sh.ehsan
سه شنبه 30 اردیبهشت 1399, 22:24 عصر
سلام ببخشید مزاحمتون شدم بنده دنبال یه تقویم فارسی برای wpf هستم اگر میشه کمک کنین ممنونتون میشم