PDA

View Full Version : کنترل های فارسی برای .NET



h.eskandari
شنبه 06 خرداد 1385, 12:23 عصر
سلام...

من برنامه و سورس مربوط به ابزارهای .NET ام رو روی سایت CodeProject گذاشته ام. مشخصات این کنترل ها به شرح زیر است :

کنترل FAMonthView جهت نمایش تقویم فارسی.
کنترل FADatePicker یک ComboBox جهت انتخاب تاریخ فارسی.
کنترل FADatePickerConverter جهت انتخاب ، نمایش و تبدیل تاریخ های فارسی و انگلیسی.
کلاس PersianDate برای کار کردن با تاریخ شمسی که مثل کلاس DateTime کار میکند.
کلاس PersianDateConverter برای تبدیل تاریخ شمسی به Gregorian و بالعکس.
کلاس PersianCalendar (جایگزین PersianCalendar مایکروسافت در .NET 2 که مشکل دارد)

کلیه کنترل ها Theme های ویندوز XP ، Office 2003 و Office 2000 رو ساپورت میکنند و قابلیت کار با تاریخ هجری شمسی ، هجری قمری و تقویم Gregorian را دارند.

برای اطلاعات بیشتر به این آدرس برید : http://www.codeproject.com/useritems/FarsiLibrary.asp

ارادتمند
هادی اسکندری

مهدی کرامتی
شنبه 06 خرداد 1385, 16:48 عصر
کار خیلی قشنگی بود. مرسی

نسخه ASP.NET اش رو کی ارائه میدی؟

h.eskandari
یک شنبه 07 خرداد 1385, 08:59 صبح
سلام ،

نسخه ASP.NET اش تقریبا حاظر شده ، البته نه با این امکانات :چشمک:
فکر میکنم ورژن اولیه اش را تا 1-2 هفته دیگر بفرستم تا در ورژن های بعد امکانات Ajax و Themes را بهش اضافه کنم.

mostafa_leman
یک شنبه 07 خرداد 1385, 10:04 صبح
سلام
آقای اسکندری یه سوال؟
چه جوری میشه عبارت (هیچ مقداری انتخاب نشده ) را حذف کرد
یا کلید خالی رو حذف کرد؟

h.eskandari
دوشنبه 08 خرداد 1385, 12:01 عصر
سلام...

در ورژن بعدی امکان تغییر متن های Default رو قرار میدم که بتوانید همه String های داخل کنترل ها رو به چیزی که میخواهید تغییر بدهید.

ورژن بعدی فکر میکنم تا یک هفته دیگر حاظر میشود.

h.eskandari
شنبه 13 خرداد 1385, 16:41 عصر
سلام...

ورژن جدید آماده است و در سایت CodeProject قرار گرفته.

مهدی کرامتی
شنبه 13 خرداد 1385, 16:53 عصر
در همون لینک؟

لطفا امکانات جدید رو هم ذکر کنید.

mostafa_leman
شنبه 13 خرداد 1385, 17:17 عصر
آقا شرمنده . من بازم نتونستم عبارت (هیچ مقداری انتخاب نشده ) را حذف یا تغییر بدم
این قابلیت رو گذاشتین؟

در ضمن یه کنترل به نام DataGridViewFADateTimePickerEditor گذاشتین error میده
شاید من نمی تونم ازش استفاده کنم

میشه راهنمایی کنین .

Parham.G
دوشنبه 15 خرداد 1385, 10:41 صبح
مجموعه بسیار جالبی است. و خیلی ممنون از اینکه اون رو به اشتراک گذاشتید.
من در کنترل FADatePicker یک مشکل با کالچر en-GB داشتم. مثلا برای تاریخ 05/06/2006 هروقت که روی دکمه کناری کلیک میکردم تا MonthView رو نمایش بده تاریخ تغییر میکرد به 06/05/2006 یعنی جای ماه و روز عوض میشد. و مجدد بالعکس. (در انگلیسی (en-GB) فرمت به این شکل هست: dd/MM/yyyy ولی در آمریکایی (en-US) به این شکل: MM/dd/yyyy یعنی جای ماه و روز متفاوت هست و مشکل ساز میشه.)
هنگام تبدیل DateTime به String باید Culture هم توجه کرد. ظاهرا شما برای تبدیلها در یکجا از InvariantCulture استفاده کرده‌اید و در جای دیگر از کالچر کنونی Thread (که به طور پیش‌فرض این هست مگر اینکه هنگام تبدیل یک کالچر خاص ذکر شود.) من با تغییر این بخش از کد در FADatePicker مشکلم برطرف شد:


public void UpdateTextValue()
{
if (mv.MonthViewControl.IsNull)
{
Text = FALocalizeManager.GetLocalizerByCulture(Thread.Cur rentThread.CurrentCulture).GetLocalizedString(Stri ngID.Validation_NullText);
}
else
{
if (mv.MonthViewControl.DefaultCulture.Equals(mv.Mont hViewControl.PersianCulture))
{
Text = ((PersianDate)SelectedDateTime).ToString(IncludesT ime, IncludesSecond);
}
else
{
if (IncludesTime && IncludesSecond)
Text = SelectedDateTime.ToString("G", Thread.CurrentThread.CurrentCulture);
else if (IncludesTime && !IncludesSecond)
Text = SelectedDateTime.ToString("g", Thread.CurrentThread.CurrentCulture);
else
Text = SelectedDateTime.ToString("d", Thread.CurrentThread.CurrentCulture);
}
}
}


اون قرمزهای قبل این بودند:


mv.MonthViewControl.DefaultCulture


چرا هر جا که کالچر غیر از fa-IR و یا ar-SA بوده از InvariantCulture استفاده کرده‌اید؟
باز هم من زیاد کد رو بررسی نکردم. اگر اشتباه میکنم بفرمایید.

h.eskandari
سه شنبه 16 خرداد 1385, 09:10 صبح
سلام ،

برای تغییر String های استفاده شده در کلیه کنترل ها ، (بطور خلاصه) باید یک کلاس تهیه کنید که از یکی از کلاسهای موجود Localizer به ارث ببرد (میتواند از BaseLocalizer در صورتیکه میخواهید همه متن ها را تغییر دهید ، و یا ENLocalizer یا FALocalizer و... درصورتیکه میخواهید بخشی از آنها را تغییر بدهید) و در این کلاس متد GetLocalizedString را Override کنید. به ازای گزینه های مختلف دلخواه در StringID میتوانید متن مورد نیاز خود را برگردانید.

پس از اینکار باید از کلاس FALocalizeManager ، گزینه CustomLocalizer استفاده کنید و آنرا به یک Instance از این کلاس که ساخته اید مرتبط کنید.

جزئیات دقیق اش را در قسمت Custom Localization موجود در برنامه DEMO میتوان دید که زبان و تقویم Spanish را به طور کامل در این کنترل ها استفاده کرده است.

برای استفاده از DataGridViewFADateTimePickerEditor هم دمو های مربوطه را ببینید.

h.eskandari
سه شنبه 16 خرداد 1385, 09:20 صبح
[/code]
اون قرمزهای قبل این بودند:


mv.MonthViewControl.DefaultCulture


چرا هر جا که کالچر غیر از fa-IR و یا ar-SA بوده از InvariantCulture استفاده کرده‌اید؟
باز هم من زیاد کد رو بررسی نکردم. اگر اشتباه میکنم بفرمایید.


سلام ،

DefaultCulture ، درصورتیکه CustomCulture خاطی Set نشده باشد ، یکی از Culture های فارسی ، عربی یا Invariant را بسته به CurrentThread.Culture برمیگرداند. در صورتیکه میخواهید از Culture دیگری استفاده کنید Property مربوطه را در کلاس FALocalizeManager را به Culture مورد نظرتان Set کنید.

با این شکل ، mv.MonthViewControl.DefaultCulture هم دقیقا به Culture مورد نظر شما منطبق خواهد بود.

اگر هنوز هم مشکلی بود بفرمائید تا در ورژن های بعدی رفع شود.

linux
سه شنبه 16 خرداد 1385, 11:32 صبح
سلام...

کلاس PersianCalendar (جایگزین PersianCalendar مایکروسافت در .NET 2 که مشکل دارد)

ارادتمند
هادی اسکندری
چه مشکلی داره؟

محمد میرمصطفی
سه شنبه 16 خرداد 1385, 15:19 عصر
با سلام و تشکر. آقا عالی بود متشکر.


سلام...

کلاس PersianCalendar (جایگزین PersianCalendar مایکروسافت در .NET 2 که مشکل دارد)

ارادتمند
هادی اسکندری

اشکال؟

h.eskandari
چهارشنبه 17 خرداد 1385, 14:34 عصر
با سلام و تشکر. آقا عالی بود متشکر.

اشکال؟


این صفحه رو در سایت MSDN ببینید. متد ToDateTime در PersianCalendar مقدار 11/11/2625 را برگردانده که غلط است.

عباس طبیبی
شنبه 20 خرداد 1385, 08:54 صبح
جناب آقای اسکندری
واقعا دستت درد نکند. خصوصا از اینکه در نسخه جدید مشکل data binding را هم حل کرده‌ای. اما یک پیشنهاد کوچک دارم. اگر کنترل FADatePicker را با کنترل تاریخ خود میکروسافت مقایسه کنیم. در مورد کنترل شما پس از انتخاب تاریخ توسط ماوس کامبوباکس بسته نمی‌شود و کاربر مجبور است یکبار دیگر فلش کامبوباکس را کلیک کند تا بسته شود( یا خارج از کامبو باکس کلیک کند) در حالیکه در کنترل میکروسافت این اتفاق بصورت اتوماتیک پس از انتخاب روز می‌‌افتد.این حالت ممکن است برای کاربر اندکی خسته کننده و اعصاب خردکن باشد. البته می‌توان بصورت برنامه‌نویسی در هنگام استفاده از کنترل شما این مشکل حل کرد. اما از آنجاییکه تصحیح این مشکل(به نظر من) نباید وقت زیادی از شما بگیرد. پیشنهاد می‌کنم در صورتیکه با حرف من موافقید آنرا حل کنید.
به هر حال کار زیبایی انجام داده‌اید و من باز هم از شما تشکر می‌کنم.

aliha499
پنج شنبه 29 شهریور 1386, 22:10 عصر
آقای هادی اسکندری...
سلام و از اینکه برای پیش برد فرهنگ برنامه نویسی در ایران فعالیت می کنید ازشما متشکرم...!

قربان چند نکته را متذکر می شوم:
1- من در vb از
آن استفاده کردم ، ولی با مشکلات بسیاری دست به گریبانم شدم. فکر کنم که شما فقط به تبدیل تاریخ به فارسی تلاش کرده اید و به نیازهای برنامه نویسان توجه نکرده اید...! البته این نظر من است...

من به تاریخ در بسیاری قسمتها نیاز داشتم ولی کنترل شما این امکان را به من نمی داد. من باید بتوانم با استفاده از کنترلهای شما ، با استفاده از یکی از خواص به سادگی به تاریخ ، و ریز تاریخ دسترسی داشته باشم که اینطور نیست! fadatetimestrip که نگو کلی سر کارم گذاشت. famonthview با نقائص بسیاری روبرو می باشد. و نیازهای کاربر را مرتفع نمی کند. البته باید این احتمال را بدهید که برنامه نویسان vb مانند c حرفه ای نیستند و باید تقریبا همه چیز را دم دست آنها بگذارید.
ضمنا اگر بتوانید در help پکیج تان در مورد vb بیشتر توضیح بدهید ممنون می شویم. در بسیاری جاها نمی توانیم به تاریخ فارسی دسترسی داشته باشیم.

از شما ممنون می شوم که با ایمیل من تماس بگیرید: aliha@usa.com

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

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

R_BABAZADEH
دوشنبه 29 مهر 1387, 18:33 عصر
سلام آقای اسکندری می خوام بدونم میشه یه کم اطلاعات بیشتری در مورد کار کردن با این ابزار ها در اختیار داشت ؟
من با vb.net کار میکنم و واقعا گیج شدم.

به عنوان مثال میخوام یه عدد 15 رقمی رو به حروف تبدیل کنم
ممنون میشم اگه یه سورس هم برای vb کارها بزارید
یا اگه ممکن یه help فارسی بزارید
ممنون

mohammad272005
شنبه 04 آبان 1387, 01:42 صبح
سلام آقای اسکندری می خوام بدونم میشه یه کم اطلاعات بیشتری در مورد کار کردن با این ابزار ها در اختیار داشت ؟
من با vb.net کار میکنم و واقعا گیج شدم.

به عنوان مثال میخوام یه عدد 15 رقمی رو به حروف تبدیل کنم
ممنون میشم اگه یه سورس هم برای vb کارها بزارید
یا اگه ممکن یه help فارسی بزارید
ممنون
ای کاش به تاریخ تاپیک یه نگاهی می کردید دوست عزیز

jafari1
سه شنبه 14 آبان 1387, 17:16 عصر
ای کاش به تاریخ تاپیک یه نگاهی می کردید دوست عزیز
سلام
تاريخ تاپيك زياد مهم نيست چون ممكن است مسئله مورد نظر در مدت زيادي مورد توجه قرارگيرد

arash22
سه شنبه 24 دی 1387, 23:26 عصر
آقای هادی اسکندری سلام و خسته نباشید
من داشتم با Farsi Library کار می کردم متوجه یک اشکال شدم
روزهای سال آینده با روزهای میلادی مشکل دارد
مثلاً 1388/05/30 در این کامپوننت روز شنبه است در حالی که در تقویم روز جمعه است، لطفاً بنده را راهنمایی کنید.
arash.arash@gmail.com

arash22
سه شنبه 24 دی 1387, 23:31 عصر
آقای هادی اسکندری سلام و خسته نباشید
من داشتم با Farsi Library کار می کردم متوجه یک اشکال شدم
روزهای سال آینده با روزهای میلادی مشکل دارد
مثلاً 1388/05/30 در این کامپوننت روز شنبه است در حالی که در تقویم روز جمعه است، لطفاً بنده را راهنمایی کنید.
arash.arash@gmail.com

spanishtrain
جمعه 20 آذر 1388, 03:00 صبح
سلام خدمت آقای اسکندری تشکر می کنم از کامپاننت خوبتون
من به یه مشکلی برخوردم وقتی که FaDatePickerConverter را به یک دیتاسورس بایند میکنم وبین رکوردهای مختلف سوییچ میکنم برای رکوردهایی که مقدار ِتاریخ مشخصی دارند مشکلی نیست ولی آنهایی که مقدار NULL دارند رو نشون نمیده ومقدار تاریخ رکورد قبلی رو نمایش میده در صورتی که باید یا خالی باشه یا Empty Value رو نشون بده

juve2008
یک شنبه 13 دی 1388, 13:30 عصر
سلام خسته نباشی
لنک فایلها که خرابه
اگه میشه کامپوننت ها رو تو سایت آپ کنید ............