PDA

View Full Version : ساخت کنترل تاریخ فارسی datePiker



sh
شنبه 08 اسفند 1383, 21:50 عصر
با عرض سلام خدمت دوستان و برنامه نویسان عزیز

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

linux
یک شنبه 09 اسفند 1383, 09:19 صبح
سلام
یک مثال از برنامه را اینجا می گذارم نسخه جدید تر شما اگر امکان در مورد ساختن کنترل که شرحش رفت نظر بدید
فکر نکنم سورس زیاد بدرد بخوره تو این مورد

sh
یک شنبه 09 اسفند 1383, 15:08 عصر
ببین من میخوام کاربر یه چیزی عین تقویم رو ببینه و روز مورد نظر رو انتخاب کنه بدین صورت روز انتخاب شده با فرمت مورد نظر بصورت 1383/12/09 در کنترل نشون داده میشه و ما دیگه نگران این نیستیم که چک کنیم آیا این فرمت رو اشتباه وارد کنه و در ثانی کاربر به سرعت میتونه یکی دو ماه قبل یا بعد رو هم نگاه کنه و روز مورد نظر رو وارد کنه


برای همین سورس رو میخوام کاش سورس رو بگذاری

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

sh
یک شنبه 09 اسفند 1383, 17:22 عصر
میخوام یه چیزی شبیه این باشه البته من هنوز تست نکردم توابع این کنترل درست عمل میکنه یا نه

linux
یک شنبه 09 اسفند 1383, 19:16 عصر
می خوام را ولش کن!
توابع را که داری نحوه درست کردن این کنترل را بگو!
ببین من یکی درست کردم ولی با حاش حال نکردم
بگو نظرت چی هست.

(سیدشریفی)
دوشنبه 10 اسفند 1383, 08:47 صبح
فکر کنم منظور شما چیزی شبیه به این باشد .
:wink:

sh
دوشنبه 10 اسفند 1383, 16:10 عصر
بله

البته با این تفاوت که بعد از انتخاب تاریخ مقدار آن بصورت مثلا 10/12/1383 نشان داده شود

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

اگر ممکنه سورس رو اینجا بگذارین

linux
دوشنبه 10 اسفند 1383, 18:37 عصر
خوب شما این را چطوری درست کردی؟
آیا به اندازه مورد نیاز textbox یا lablel اضافه کردی و مقدار دهی کردی؟ یا با drawing اینها را روی فرم کشیدی؟ من با drawing این کار را کردم ولی باحال نشد
این برنامه زیر را بگیرید ببینید.

(سیدشریفی)
سه شنبه 11 اسفند 1383, 09:51 صبح
من از تبدیل تاریخ آقا بابک Linux استفاده کرده ام .
و اطمینان دارم که صحیح میباشد .
البته سورس من شاید مشکلاتی داشته باشد ولی من تا بحال به مشکلی برنخورده ام .
:)

linux
سه شنبه 11 اسفند 1383, 19:12 عصر
کد شما را دیدیم ولی خیلی نوشتی! کمتر از این هم میشد!
اما ایده خیلی خوبی به من داد مرسی دستت درد نکنه

linux
چهارشنبه 12 اسفند 1383, 15:31 عصر
خوب به نظر شما یک کنترل این چنینی چه خواصی باید داشته باشه؟

sh
چهارشنبه 12 اسفند 1383, 17:27 عصر
اول اینکه تاریخ رو به صورت فرمت اسمبلی شما بیاره یعنی به این صورت 12/12/1383
دوم اینکه امکان تعریف روزهای تعطیل سال رو داشته باشه


یه جوری باشه شبیه Combobox و وقتی تاریخ رو انتخاب کردین فرمت بالا در Combobox نشون داده بشه

linux
چهارشنبه 12 اسفند 1383, 19:23 عصر
دوم اینکه امکان تعریف روزهای تعطیل سال رو داشته باشه
برای این راه حلی داری؟؟
یه سوالی وقتی یه کنترل تعریف می کنی
Inherits System.Windows.Forms.UserControl
چطور میشه کاری کرد که این کنترل resize نشه؟
به نظر شما اگر دقیقا شکل monthcalndar خود vb.net باشه خوب هست؟

linux
چهارشنبه 12 اسفند 1383, 21:24 عصر
120 بار این موضوع دیده شده یک نفر هم نیست نظر بده!

sh
چهارشنبه 12 اسفند 1383, 23:09 عصر
میگم بابک

چطوره کنترل از DateTimePickerارث ببره و متدها ی اونو Ovverid کنیم ؟

اینطوری توابع خودمون رو جایگزین توابع تبدیل اون قرار میدیم

(سیدشریفی)
پنج شنبه 13 اسفند 1383, 07:48 صبح
آقا شهریار از کامپوننت ارسالی ممنون بدستم رسید .
دارم روش کار میکنم خیلی امکانات خوبی دارد .
:flower:

آقا بابک قابلی نداشت در ضمن من بر روی پروژه ای کار میکنم و سرم خیلی شلوغ است وگرنه در این کار به شما کمک میکردم .
باز هم اگر وقت کردم و فکری به نظرم رسید در خدمت هستم .
:sunglass:

ehsan707
پنج شنبه 13 اسفند 1383, 15:38 عصر
--Edited--

راجع به روزهای تعطیل عرض کنم که نه نمیشه چونکه ما یه سری روز تعطیل قمری داریم که رو هوا هستند و هر وقت که ماه رو دیدیم اون ها رو هم دیدیم مگه اینکه ماهای قمری رو هم دخالت بدیم (مثلا شهادت امام حسین) ماهای قمری هم دخالت دادن میدونین که چی بساطیه

در خصوص کلاس ویندوز فرم هم باید عرض کنم که طبعا دوتا کنترل نیاز داریم چون یکی باید از کلاس وب کنترل برای asp.net توارث بگیره

من یه مشکلی داشتم با اولیت روز هفته ماه شمسی میخواستم ببینم شما تابعی چیزی دارین واسش؟ مثلا ماه 2 سال 1383 روز 1 چند شنبس

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

linux
جمعه 14 اسفند 1383, 02:51 صبح
نه! من ادعایی ندارم ، زحمتی زیادی هم کشیدم بابت درست کردن این ابزار برو بچه های اینجا هم تا جایی که می شناسم همه با مرام هستند. اگر سورس کد اینجا نگذاشتم فقط برای این هست که می خوام کنترلی که خودم درست کردم تیکه پاره نشه. هر چند سورس توابع اصلی تبدیل تاریخ ها را قبلا گذاشتم

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

در خصوص کلاس ویندوز فرم هم باید عرض کنم که طبعا دوتا کنترل نیاز داریم چون یکی باید از کلاس وب کنترل برای asp.net توارث بگیره
سوالم خوب دقت می کردی!

من یه مشکلی داشتم با اولیت روز هفته ماه شمسی میخواستم ببینم شما تابعی چیزی دارین واسش؟ مثلا ماه 2 سال 1383 روز 1 چند شنبس
خوب اگر با dll که درست کردم کار کنی می تونی از این روش استفاده کنی





Dim pt As New PersianToolsPack.PersianDate
Dim d As Date
d = pt.PersianToCivil("1383/02/01")
MsgBox(pt.CivilToPersian(d).DayIndex)


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

ehsan707
جمعه 14 اسفند 1383, 10:01 صبح
دوست عزیز من نمیخوام بخودی حجم کلاس زیاد بشه همونطور که قبلا هم در این خصوص صحبت کردیم (و ظاهرا توافق کردیم) حجم کلاس شما به صورت غیر منطقی زیاده

ما منتظریم که کنترل شما رو ببینیم

sh
جمعه 14 اسفند 1383, 12:38 عصر
احسان نوشتی :

همین خنگا

تو خجالت نمیکشی اینجوری می نویسی :sad2:

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

راجع به روزهای تعطیل عرض کنم که نه نمیشه

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

linux
جمعه 14 اسفند 1383, 12:49 عصر
به صورت غیر منطقی
تقصیر کامپیایلر است نه من!
کجای 70 کیلو بایت زیاده؟

ehsan707
جمعه 14 اسفند 1383, 15:27 عصر
احسان نوشتی :

همین خنگا

تو خجالت نمیکشی اینجوری می نویسی :sad2:

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

راجع به روزهای تعطیل عرض کنم که نه نمیشه

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

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

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

در خصوص bind نمودن هم مطالبی دارم که بعدا عرض خواهم کرد

ehsan707
جمعه 14 اسفند 1383, 15:31 عصر
به صورت غیر منطقی
تقصیر کامپیایلر است نه من!
کجای 70 کیلو بایت زیاده؟

بی انصاف تا چند وقت پیش که 36 تا بود؟ :)

linux
جمعه 14 اسفند 1383, 18:17 عصر
من تقریبا 60 درصد کار را انجام دادم این persianMonth calendar هست.
به نظر شما به جز dateselected چه رخداد دیگه ای لازم داره؟
در ضمن چی کار میشه کرد که سایز یک کنترل ثابت باشه و نشه تغییرش داد

sh
شنبه 15 اسفند 1383, 00:19 صبح
بابک نمیشه یه کاری بکنی که بصورت DateTimePiker باشه یعنی کاربر به جای نوشتن با انتخاب تاریخ مقدار انتخاب شده را در کنترل نشان میدهد

linux
شنبه 15 اسفند 1383, 07:38 صبح
چرا! دارم همین کار را می کنم ولی اول باید یک همچین چیزی داشته باشیم مثل خود ویندوز که یک monthcalendar داره یک datepicker حالا من اولی را درست کردم دارم روی دومی کار می کنم

(سیدشریفی)
شنبه 15 اسفند 1383, 08:52 صبح
در باره روزهای تعطیل :
فکر کنم در اول بعضی از تقویمها دیده باشید که روزهای تعطیل را بطور خلاصه نوشته مثلا :
1 فروردین عید نوروز
2 فروردین عید نوروز
3 فروردین عید نوروز
4 فروردین عید نوروز
11 فروردین اربعین حسینی
12 فروردین روز جمهوری اسلامی ایران
13 فروردین روز طبیعت
و غیره ...

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

:موفق:

linux
شنبه 15 اسفند 1383, 15:00 عصر
مقاله در مورد نحوه ی ساخت کامپوننت که کاملا شرح داده باشه جایی سراغ ندارید؟

ehsan707
شنبه 15 اسفند 1383, 21:28 عصر
**** No Warez Activity ****
کنترل ملی افتخار ملی
تهیه شده از برنامه های دزدی :mrgreen:

linux
یک شنبه 16 اسفند 1383, 09:35 صبح
این کتاب برای درست کردن کنترل های اکتیوایکس با ویبی 6 هست؟

sh
دوشنبه 17 اسفند 1383, 16:41 عصر
من کتاب دارم ولی حجمش زیاده

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

linux
دوشنبه 17 اسفند 1383, 21:39 عصر
چطوری میشه کنترلی را خارج از یک فرم نمایش داد؟

(سیدشریفی)
سه شنبه 18 اسفند 1383, 08:19 صبح
آقای linux اگر منظورتان را خوب متوجه شده باشم میتوانید هر کنترلی را که میخواهید بصورت تکی نشان داده شود در داخل فرم قرار داده و فرمتان را هم اندازه کنترل کنید بصورتیکه فقط کنترل دیده شود و هر موقع که فرم را فراخوانی کنید مثل این است که کنترلی خارج از فرمهایتان ایجاد کرده اید .
از این روش در ساخت کامپوننتها استفاده میشود و در واقع کنترلهای بکار رفته همگی داخل فرم هستند ولی به اندازه فرم میباشند که بدین ترتیب فرمها دیده نمیشوند و فقط کنترلها قابل رویت هستند .
:)

linux
سه شنبه 18 اسفند 1383, 10:41 صبح
مرسی راه گشا بود.

sh
سه شنبه 25 اسفند 1383, 00:48 صبح
مرسی راه گشا بود

یعنی به سلامتی کامپوننت کامل شد ؟

linux
سه شنبه 25 اسفند 1383, 08:28 صبح
یعنی به سلامتی کامپوننت کامل شد ؟

نه هنوزززز

armanforghani
چهارشنبه 26 اسفند 1383, 17:55 عصر
دوستان یکی از شما فرمودید که براینمایش کنترل خارج از فرم از یک فرم دیگه استفاده کنید. مشکلی که وجود داره تنظیم موقعیت نمایش فرم جدید هست. چون هنگام نوشتن کنترل براحتی نمی تونید جایی رو پیدا کنید که کنترل در ظرف اصلی نمایش داده خواهد شد. مگر اینکه همیشه فرم دوم رو وسط نمایش بدید. در این صورت هم مثل مایکروسافت نمیشه. البته من تو ویبی دات نت هنوز تست نکردم ببینم . شاید بشه تاپ و لفت کنترل رو در طرف اصلی پیدا کرد.
از طرفی بعضی کنترل ها که مثل کمبو باز میشند، قسمت باز شده فرم نیست و هیچ هندلی نداره. در این باره بعدا بحث میشه. در مورد توابع تبدیل تاریخ من کلیه توابع لازم رو حدودا 15 هست برای نمایش و تبدیل تاریخ ها به هم و نمایش روز های هفته ، تاریخ بلند و .... نوشتم و سالها در نرم افزار بانک ملت تست کردم. بی نقصه. از نظر ریاضی هم میشه ثابت کرد همیشه درسته. اما در این باره یک استثنا هست که شاید شما ندونید و پارسا 2001 هم اشتباه کرده. من با ژئو فیزیک صحبت کردم در این باره. بعدا در موردش صحبت میکنم که در کنترلتون رعایت کنید

linux
پنج شنبه 27 اسفند 1383, 09:12 صبح
همش که شد بعدا!
یه خاصیتی هست که شما می تونید در یک فرم نقطه top و left را نسبت به صفحه ی اصلی مشخص کنید

armanforghani
پنج شنبه 27 اسفند 1383, 11:29 صبح
اگر خاصیتی سراغ داری که بالا و چپ کنترل اکتیو ایکس را در ظرف بر می گرداند به نحوی که این مشخصات را بتوان هنگام ساخت کنترل استفاده کرد بفرمایید. حداقل در وی بی که من یادم نمی آد داشته باشیم

linux
پنج شنبه 27 اسفند 1383, 12:59 عصر
بله
.pointtoscreen

pointtoclient

armanforghani
پنج شنبه 27 اسفند 1383, 19:36 عصر
خوب این خاصیت که فرمودید که در وی بی یادم نمی آد داشته باشیم. احتمالا شما در وی بی دات نت استفاده کردید . درسته ؟

linux
یک شنبه 30 اسفند 1383, 20:50 عصر
بله من این کنترل را برای .net دارم طراحی می کنم

armanforghani
سه شنبه 02 فروردین 1384, 21:58 عصر
من به طور موازی دارم یک کنترل برای وی بی و وی بی دات نت می نویسم.
اگر از دوستان عزیز کسی تجربه ای برای حل این مشکل در وی بی داره بگه.
البته روش های زیادی هست ولی هیچ کدوم زیاد دلچسب نیست. مثلا میشه هندل رو پیدا کرد و جابجا کرد. یا اول فرم را وسط نمایش داد بعد با استفاده از عرض کنترل جابجا کرد. ولی اگر کسی روش مناسب تری داره بگه ممنون میشیم

sh
یک شنبه 25 اردیبهشت 1384, 21:35 عصر
بابک جان خبری نشد ؟

linux
چهارشنبه 04 خرداد 1384, 21:52 عصر
شرمنده که طولانی شد
این نسخه آزمایشی هست دوستان لطف کنن و استفاده کنند اگر مشکلی بود خبر بدهید اگر فکر می کنید باید چیزی اضافه بشه حتما بگید البته هنوز ناقص هست

حسن جمشیدی
شنبه 07 خرداد 1384, 14:08 عصر
سلام
آقا جان نمی شه این Monthcalendar رو به صورت datetime picker در بیارید؟

ممنون

linux
شنبه 07 خرداد 1384, 16:59 عصر
چرا برادر جان من هم می خواهم این کار را بکنم

hadi2345
شنبه 07 خرداد 1384, 18:38 عصر
linux عزیز زحمات شما واقعا جای تقدیر داره . فعلا که مشکلی نداره . البته زیاد باهاش ور نرفتم .

حسن جمشیدی
یک شنبه 08 خرداد 1384, 09:00 صبح
لینوکس جان عزیز اولا دستت درد نکنه ثانیا به کجا رسیدی امیدی است؟
شدیدا مورد نیازه !

Babak-Aghili
دوشنبه 09 خرداد 1384, 00:55 صبح
آقا این سالم هست یا نه ؟

------
امضا : یکی از لاشخورها !

حسن جمشیدی
دوشنبه 23 خرداد 1384, 13:34 عصر
لینوکس جان آقا این datetimepicker چی شد

linux
دوشنبه 23 خرداد 1384, 14:37 عصر
با تشکر از شهریار خان
این آخرین چیزی هست که درست کردم

sh
دوشنبه 23 خرداد 1384, 17:08 عصر
خواهش میکنم دوست عزیز

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

Mohammad .net
پنج شنبه 24 شهریور 1384, 19:06 عصر
با سلام

با توجه به اینکه فایل های ضمیمه این تاپیک در جابجایی نرم افزار سایت ! از بین رفته و نمی دونم این بحث به نتیجه رسیده یا نه و اینکه دارم سعی می کنم یک همچین کنترلی بنویسم و اجتناب از Cross posting و ...

سورس PmonthCalendr رو اینجا می گزارم تا در باره اش بحث کنیم

reza_reza_shirazi
سه شنبه 17 آبان 1384, 07:31 صبح
این سورس که گذاشتی وقتی دانلود میشود مشکل دارد ! winrar اون را باز نمیکند.

reza_reza_shirazi
سه شنبه 17 آبان 1384, 07:33 صبح
لطفا یک فایل rar سالم را بگذارید!

Bithiah
سه شنبه 17 آبان 1384, 12:43 عصر
lمن تونستم دانلودش کنم. کار هم می کنه. البته هنوز نمی دونم چطوریاست. ولی دستتون درد نکنه. ممنون

sohrab o
پنج شنبه 02 فروردین 1386, 10:23 صبح
متشکر اما آخره بحث چی شد

linux
پنج شنبه 02 فروردین 1386, 12:17 عصر
متشکر اما آخره بحث چی شد

آفرین به پیگیری شما بحث مال 2 سال پیش هست نکند نشستی از اول داری پستها را می خوانی؟

golihaghighi
یک شنبه 21 مرداد 1386, 14:24 عصر
کسی سورس datetimepiker داره؟
لطفا سورس بدید یا حداقل توضیحات کافی.