سلام
من همچنان منتظر تبديل تاريخ ميلادي به شمسي و برعكس هستم!!!
Printable View
سلام
من همچنان منتظر تبديل تاريخ ميلادي به شمسي و برعكس هستم!!!
با سلاممن کامپوننت آقای خرسندی رو دانلود کردمولی یه سوالی داشتم :من میخواستم تاریخ امروز که اون پایین تقویم قرار داره مقدارش به صورت خودکار یعنی هر بار که برنامه رو باز میکنی تو تمام ادیتهایی که بالای فرمهای برنامم هست قرار بگیره ،میخواستم بدوونم چه جوری ؟آیا امکانش هستبا تشکر
تاريخ امروز رو ميتونی با استفاده از كد زير بگيری :
SolarMonthCalendar1.OutDate;
تا 3-4 روز آينده يك نسخهی جديد از كامپوننت رو آپلود ميكنم.
- پیاده سازی Event برای تمام Button ها
- پیاده سازی خروجی جداگانه برای روز ، ماه ، سال (عدد)
- كليد Esc برای بستن popup window
- Hint برای دكمههای سال بعد، سال قبل و C
- تغيير رنگ ستون روز تعطيل به قرمز (جمعه برای خورشيدی و Sunday برای ميلادی)
- رفع مشكل popup-window در دلفی 2005، 2006 و 2007
- دريافت نام ماه، نام روز
- يك ويژگی برای نمايش و عدم نمايش روز جاری (امروز .......)
- رفع مشكل محدودهی مقدار متغيرهای مربوط به سال، ماه و روز
- رفع اشكال عدم اجرای كد موجود در OnExit
- كنترل تاريخ ورودی در كلاس TCustomSolarCalendar
- HyperLink كردن Label امروز برای تغيير تاريخ به تاريخ امروز
- قرار دادن روز در سلولهای نارنجی رنگ
- كليك روی روزها در خانههای نارنجی رنگ و تغيير ماه
- سفارشی كردن پيغام كنترل تاريخ در كلاس TSolarDatePicker
- اضافه كردن ويژگی DateKind به كلاس TSolarDatePicker برای تغيير طرح تقويم(خورشيدی/ميلادی)
- رفع اشكال سال كبیسه ميلادی
از اينجا دانلود كنيد
اگه فقط قصدتون تبديل تاريخ ميلادی به شمسی هست، بهتره كه از توابع موجود استفاده كنيد، توابع موجود در يونيت SolarUtl اقای خجسته به نظرم مناسب هست، اما اگر ميخواهيد از اين كامپوننت به عنوان اينترفيس استفاده كنيد ميتونيد ويژگی DateKind كامپوننت رو به dkGregorian تغيير بديد، تاريخ صحيح رو وارد كنيد و مقدار DateKind را به dkSolar تبديل كنيد و خروجی رو از OutDate دريافت كنيد.
با سلام
اولاً تشکر میکنم بابت کامپوننتتون
بعد یه سوال داشتم :
ببینید من از اون کمبوباکسی که برای وارد کردن تاریخ گذاشتین ، تو برنامه م اون جاهایی که کاربر لازمه تا تاریخ رو وارد کنه ، استفاده کردم .
مثلا کاربر یه تاریخی رو انتخاب میکنه :15/11/1387
بعد مثلاً کاربر میاد و اونو دستکاری میکنه مثلاً اینجوری :44/11/1387
بعد میاد دکمه "SAVE" رو میزنه و اون تاریخ نادرست، تو جدولا سیو میشه !
اینجور که من باهاش کارکردم وقتی همون تاریخ 44/11/1387 رو وارد میکنه در صورتی چکش میکنه که شما اون فلش مثلثی شکل کمبوباکس رو بزنید بعد میگه آره تاریخت اشتباست.
نمیشه اینجوری باشه که وقتی از کمبوباکست خارج میشی یعنی تو onexit چک کنه یعنی اونجا اون اخطاره بیاد ؟؟؟و کاربر نتوونه اون تاریخ اشتباه رو سیو کنه
باتشکرازشما
يه ويژگی برای اين كار اضافه كردم،
مرسی.
ممنونمنقل قول:
يه ويژگی برای اين كار اضافه كردم،
این ویژگیه کجاست ؟؟ باید دوباره اون فایل پست 55# دانلود کنم ؟
با تشکر
هنوز فايلش رو آپلود نكردم،
تو نسخه بعد ميتونيد ببينيد.
متاسفانه آپلود نسخه 1.19.7 تاخير زيادی داشت ولی به اين خاطر كه شما سورس رو در اختيار داريد ميتونيد خودتون تغييرات لازم رو انجام بديد،
در ضمن من منتظر نظرات و ايدهها هستم،
مرسی.
با سلام
من از کامپوننت vclskin
استفاده میکنم
وقتی از اون کمبوباکس مربوط به انتخاب تاریخ استفاده میکنم ویه تاریخ انتخاب میکنم این ارور میاد
Access violation at address 00000000.Read of address 00000000.
کاملاً معلومه که به خاطر استفاده کردن از این کامپوننتست چن وقتی ازش استفاده نمیکنم به راحتی از اون کمبوباکس میشه تاریخ انتخاب کرد و دیگه م اون ارور نمیاد
میخوام ار این کامپوننت vcl skin
و همچنین کامپوننت تاریخ باهم استفاده کنم ولی نمیشه ؟؟
واسه برطرف شدن این ارور باید چی کار کنم؟
نگفتیدچرا استفاده کردن این کامپوننت با vclskin اون خطارو میده ؟
انتظار نداری كه بتونم با هر ابزاری امتحانش كنم،
شما كه VCLSkin رو داری و نصب كردی Trace كن ببين چه مشكلی داره.
مرسی.
با سلام
گفتم که این ارور رو میده :
Access violation at address 00000000.Read of address 00000000.
نه ، انتظار ندارم ... ولی گفتم شاید یه سری تنظیمات داره که من نمیدونم.
مرسی
سلامنقل قول:
دوست عزیر کامپوننت vcl skin شما مشکل داره. من تست کردم.
ممنون میشم بگید از چه ورژنی از Vclskin استفاده میکنید و تستش کردید تا من اونو نصب کنم چون من به این کامپوننت تاریخ نیاز دارم
بازم متشکر
سلام آقای خرسندی
این کامپوننت خیلی عالی و کاربردی است.اما در DtaePicker نمی توانم روزهای آخر ماه (ردیف یکی مانده به آخر که جزء همین ماه است ) را انتخاب کنم . لطفا مرا راهنمایی کنید.اگر upload کردن ورژن صحیح خیلی طول می کشد لطفا اقدامات لازم را به من Email کنید .
با تشکر
mehdi_eghbali@yahoo.com
من هم همین مشکل رو دارم:ناراحت:نقل قول:
اما در DtaePicker نمی توانم روزهای آخر ماه (ردیف یکی مانده به آخر که جزء همین ماه است ) را انتخاب کنم
اگر مشکل شما با حذف این کاراکترها حل می شه خوب می تونید از ویرایشکر داس استفاده کنید و این سه کاراکتر رو حذف کنیدنقل قول:
چیزی که کامپایلر داره بهش اشاره میکنه، عبارت کوچکیه که اول فایلهای یونیکد قرار میگیرن
برای این کار کافیست که داس رو باز کنید (Start Menu\Programs\Accessories\Command Prompt ) بعد دستور زیر رو وارد کنید
Edit file.xxx
بعد از باز شدن فایل در داخل محیط ویرایش گر می تونید کاراکترهای اضافی رو حذف کنید و فایل رو ذخیره کنید
لطفاً فايل ضميمه رو با فايل SolarCalendarPackage.pas جايگزين كنيد،
تو اين فايل اشكال عدم انتخاب بعضی از سلولها رفع شده.
مرسی.
دوستانی كه خواسته بودند كامپوننت تقويم قابليت انتخاب چند روز به صورت يكجا رو داشته باشه، لطفاً نحوهی كار رو بنويسند،
مرسی.
نسخهی 1.28.8
- بررسی تاريخ در هنگام خروج از كامپوننت TSolarDatePicker توسط ويژگی CheckOnExit
- كنترلهای UpDown و Edit برای سهولت در تغيير سال بر روی عنوان تقويم قرار گرفت.
- نوع moNone برای عدم دسترسی به ComboBox و PopupMenu ماه به كامپوننت اضافه شد.
- ويژگی ShowCellInColor اضافه شد.
- تغيير رنگ گزينه امروز در صورتی اشارهگر Mouse روی آن قرار گيرد.
- نمايش Hint روی سلول(روز) انتخاب شده.
- استفاده از كليدهای Ctrl+Enter برای تغيير از تاريخ شمسی به تاريخ ميلادی و برعكس(كلاس TSolarDatePicker)
- پنجرهی تقويم توسط كليدهای Ctrl+Down باز میشود.
- ويژگی ShowDefaultDate برای نمايش تاريخ به صورت پيشفرض هنگام خالی بودن SolarDatePicker اضافه شده است.
- ويژگی Glyph برای تغيير Icon موجود در دكمه Combobox.
ميتوانيد از اينجا دانلود كنيد.
اين فايل اولين نسخهی راهنمای تقويم هست،
لطفاً نظرتون رو بنويسيد تا در كنار تقويم در سايت SourceForge آپلود كنم.
مرسی.
من این کامپوننت را هنوز روی دلفی 2009 تست نکردم. آیا با دلفی 2009 سازگار شده؟
علی جان هنوز روی دلفی 2009 كاری نكردم ولی با دلفی 2007 مشكل خاصی نداره و فقط چند تا مشكل جزئی هست كه بايد حل بشن.
راهنما رو ديدی؟
پس من روی دلفی 2009 چک میکنم و اطلاع میدم که آیا مشکل داره یا نه.نقل قول:
هنوز روی دلفی 2009 كاری نكردم ولی با دلفی 2007 مشكل خاصی نداره و فقط چند تا مشكل جزئی هست كه بايد حل بشن.
نه هنوز. تازه الان دارم می گیرمش. دستت درد نکنهنقل قول:
راهنما رو ديدی؟
توی دلفی 2009 تستش کردم...
در زمان کامپایل یک Warning در انتهای متد TCustomSolarCalendar.YearEditKeyPress وجود داره که چندان مهم نیست با تغییر کد از:
if not(Key in ['0'..'9', #8, #38]) then
key := #0;
به:
{$IFDEF UNICODE}
if CharInSet(Key,['0'..'9', #8, #38]) then
Key := #0;
{$ELSE}
if not(Key in ['0'..'9', #8, #38]) then
key := #0;
{$ENDIF}
برطرف میشه.
در Designer دلفی نوار کامپوننت TSolarMonthCalendar در حالت Default کامل رسم نمیشه؛ از سمت چپ تا پایان کادر ورود سال رسم میشه، و بعد از آن رسم نمیشه. تغییر رنگ CaptionColor در حالت Custom موجب تغییر رنگ نوار عنوان میشه، ولی با تغییر حالت به Default، به رنگ پیش فرض برنمی گرده.
در Runtime، نوار عنوان عبارت "سال" را ناقص مینویسه (فقط "ل" نوشته میشه). رنگ انتخاب شده برای CaptionColor هم تاثیری نداره، و نوار عنوان همیشه با همون رنگ پس زمینه رسم میشه.
TSolarDatePicker هم وقتی تقویم را باز میکنه، به کلیک موس روی Cellها واکنش نمیده، و کاربر فقط میتونه با استفاده از کیبورد روی Cellها حرکت کنه.
من کل سورس را نخواندم و همه قابلیت ها را تست نکردم، شاید مشکلات دیگه ایی هم وجود داشته باشه. اگر بتونی با DUnit یک سری Test Case بنویسی که بطور خودکار قابلیت های مختلف را تست کنه، هم تغییرات در کامپوننت برای خودت آسانتر میشه، هم اگر کسی بخواد باگی را برطرف کنه، میتونه بعد از تغییر کد، با اجرای Test Caseها بطور خودکار، متوجه بشه که آیا تغییراتش موجب خراب شدن چیزی میشه یا نه.
راستی، راهنما را هم دیدم، خیلی خوب شده.
قربانت
نسخهی 1.41.8
- تابع IncYear، سال را به تعدادی كه مشخص میكنيد افزايش میدهد، اگر پارامتری برای اين تابع مشخص نكنيد از مقدار پيش فرض (عدد 1) استفاده میكند.
- تابع IncMonth، ماه را به تعدادی كه مشخص میكنيد افزايش میدهد.
- تابع IncDay، روز را به تعدادی كه مشخص میكنيد افزايش میدهد.
- تابع DecYear، سال را به تعدادی كه مشخص میكنيد كاهش میدهد.
- تابع DecMonth، ماه را به تعدادی كه مشخص میكنيد كاهش میدهد.
- تابع DecDay، روز را به تعدادی كه مشخص میكنيد كاهش میدهد.
- تابع GotoYear، تقويم را برای سال خاصی تنظيم میكند.
- تابعGotoMonth، تقويم را برای ماه خاصی تنظيم میكند.
- تابع GotoDay، تقويم را برای روز خاصی تنظيم میكند.
- تابع ConvertDate، تبديل تاريخ از شمسی به ميلادی و برعكس.
- تابع ConvertYear، تبديل سال از ميلادی به شمسی و برعكس.
- تابع ConvertMonth، تبديل ماه از ميلادی به شمسی و برعكس.
- تابع DaysBetween، بدست آوردن تعداد روزهای بين دو تاريخ.
سورس، مثال و فايل راهنمای كامپوننت تقويم رو ميتونيد از اينجا دانلود كنيد.
سلام
جناب m-khorsandi من اولین باره دارم از كامپوننت تقويم شمسی شما استفاده می کنم . نسخهی 1.41.8 رو دانلود کردم بعد از نصب تبی به تب ابزارم اضافه نشد ! می شه راهنمایی کنید مشکل از کجاست روی یه سیستم دیگه هم نصب کردم اما روی اون هم کار نکرد؟اگر بقیه دوستان هم می دونن مشکل از کجاست لطفا راهنمایی کنن ؟
روی هر دو سیستم دلفی 7 نصب هست .
http://upload.iranblog.com/1/1234006547.jpg
راه حلش فعلاً اينه كه نسخهی قبلی(1.28.8) رو نصب كنی و فايل SolarCalendarPackage.pas رو با همين فايل از نسخهی جديد (1.41.8) جايگزين كنی.
از کجا میشه نسخه 1.28.8 را دانلود کرد ؟
نسخه 1.28.8
نسخهی 1.43.8
- رفع اشكال نصب كامپوننت در نسخهی 1.41.8
- متدهای Drop و Close به كلاس TSolarDatePicker اضافه شده است.
- كد تابع ShowPopup بهينه شده.
از اينجا ميتونيد دانلود كنيد.
آقای خرسندی عزیز سلام :قلب:
بابت کامپوننتی که طراحی کردی از شما تشکر می کنم، البته من این را همین امروز 1388/01/13 دانلود کردم. یعنی با برنامه کار نکردم. ولی در اولین بررسی دموی برنامه یک نکته قابل توجه به نظرم رسید. نمی دونم چرا اول باید خطا دزست بشه و بعد پیغام بدیم که ورودی اشتباهه. تقریبا در اکثر برنامه هایی که ورودی تاریخ دارند این مشکل وجود داره. :متفکر:
یه سؤال دارم : اگر کاربر مجبور بشه که فقط مقادیر صحیح را وارد کنه، دقت برنامه و سرعت ورود و ذخیره سازی اطلاعات بالاتر نمیره؟
من یک برنامه اجرایی ضمیمه کردم. این کامپوننت شبیه TEdit است ولی فقط برای ورود تاریخ بکار میره. سورس اونو نذاشتم چون باید از صاحب اصلیش (دوستم که با هم برنامه می نویسیم)اجازه بگیرم. در این کامپوننت بسته به موقعیت ورود روز و یا ماه نمیذاره کاربر عددهایی خارج از محدوده وارد کنه چه برسه به ورود حروف البته چند تا نقص کوچیک داره که باید اونارو برطرف کنیم.
یه پیشنهاد اگه قسمت ورود دستی تاریخ را به این صورت دربیاری میشه گفت کامپوننتت عالی میشه.
باز هم از کامپوننت خوبت ممنونم :لبخند:
http://www.4shared.com/file/96333858...ate_Input.html
اين حالت زمانی اتفاق ميفته كه شما در حال ديباگ برنامه هستيد و در واقع برنامه رو توسط دلفی اجرا میكنيد، در اين حالت ابتدا خطا رو میبينيد، ولی زمانی كه فايل اجرایی رو اجرا میكنيد خطای دلفی رو نمیبينيد.نقل قول:
بابت کامپوننتی که طراحی کردی از شما تشکر می کنم، البته من این را همین امروز 1388/01/13 دانلود کردم. یعنی با برنامه کار نکردم. ولی در اولین بررسی دموی برنامه یک نکته قابل توجه به نظرم رسید. نمی دونم چرا اول باید خطا دزست بشه و بعد پیغام بدیم که ورودی اشتباهه. تقریبا در اکثر برنامه هایی که ورودی تاریخ دارند این مشکل وجود داره.
اين مورد هم در قالب يك MaskEdit قبلاً ديده شده ولی زمان لازم داره و البته ضروری هم هست.نقل قول:
یه سؤال دارم : اگر کاربر مجبور بشه که فقط مقادیر صحیح را وارد کنه، دقت برنامه و سرعت ورود و ذخیره سازی اطلاعات بالاتر نمیره؟
من یک برنامه اجرایی ضمیمه کردم. این کامپوننت شبیه TEdit است ولی فقط برای ورود تاریخ بکار میره. سورس اونو نذاشتم چون باید از صاحب اصلیش (دوستم که با هم برنامه می نویسیم)اجازه بگیرم. در این کامپوننت بسته به موقعیت ورود روز و یا ماه نمیذاره کاربر عددهایی خارج از محدوده وارد کنه چه برسه به ورود حروف البته چند تا نقص کوچیک داره که باید اونارو برطرف کنیم.
یه پیشنهاد اگه قسمت ورود دستی تاریخ را به این صورت دربیاری میشه گفت کامپوننتت عالی میشه.
مرسی از توجهت.
شاید منظورمو درست نگفتم. منظورم از خطا همان پیغام خود برنامه مبنی بر " تاریخ وارد شده معتبر نمی باشد، لطفا تاریخ صحیح را وارد نمایید" است.نقل قول:
اين حالت زمانی اتفاق ميفته كه شما در حال ديباگ برنامه هستيد و در واقع برنامه رو توسط دلفی اجرا میكنيد، در اين حالت ابتدا خطا رو میبينيد، ولی زمانی كه فايل اجرایی رو اجرا میكنيد خطای دلفی رو نمیبينيد.
یعنی چرا بذاریم کاربر خطا در ورود اطلاعات داشته باشه.
البته در این کامپوننت ما از MaskEdit استفاده نکردیم و اعداد هر قسمت جداگانه بررسی شده اند. البته اگه این سیستم جواب بده خوشحال میشم یاد بگیرم.
ممنون......
با سلام و تشكر از شما آقاي خرسندي به خاطر كامپوننت بسيار خوبي كه طراحي كردين. من با اين كامپوننت چند مشكل دارم كه اميدوارم جوابم رو بدين.
1. پس از نصب كامپوننت اگر از دلفي7 خارج بشوم و دوباره وارد دلفي بشم و بخوام از كامپوننت استفاده كنم پيام خطاي زير را ميدهد.(لطفا عكس رو ببينيد يعني فايل calendar-error.rar) و براي اينكه بتونم ازش استفاده كنم بايد دوباره نصبش كنم. به عبارتي با هر بار ورود به دلفي7 بايد يكبار كامپوننت رو نصب كنم.
2. در ضمن گفته بوديد كه مشكل كامپوننت را با سال كبيسه حل كرده ايد. اما مثل اينكه اين مشكل هنوز حل نشده است چون همانطور كه تصوير نشان ميدهد اسفند سال 87 را 29 روزه نشان ميدهد. حال ايا اين مشكل براي سال 1392 هم وجود داره؟ (لطفا عكس رو ببينيد يعني فايل calendar.rar)
عكسی كه از پيغام خطا گذاشتيد با اون چيزی كه من تصور ميكردم تفاوت داشت،نقل قول:
1. پس از نصب كامپوننت اگر از دلفي7 خارج بشوم و دوباره وارد دلفي بشم و بخوام از كامپوننت استفاده كنم پيام خطاي زير را ميدهد.(لطفا عكس رو ببينيد يعني فايل calendar-error.rar) و براي اينكه بتونم ازش استفاده كنم بايد دوباره نصبش كنم. به عبارتي با هر بار ورود به دلفي7 بايد يكبار كامپوننت رو نصب كنم.
وقتی از يك يونيت يا كامپوننت استفاده میكنيد بايد مسير اون رو به ليست مسيرهای Library دلفی اضافه كنيد تا بداند كه ابزار مورد نظر در كدام مسير قرار دارند و بتواند استفاده كند.
Tools -> Environment Options -> Library -> Library path
اين مشكل رو ديدم،نقل قول:
2. در ضمن گفته بوديد كه مشكل كامپوننت را با سال كبيسه حل كرده ايد. اما مثل اينكه اين مشكل هنوز حل نشده است چون همانطور كه تصوير نشان ميدهد اسفند سال 87 را 29 روزه نشان ميدهد. حال ايا اين مشكل براي سال 1392 هم وجود داره؟ (لطفا عكس رو ببينيد يعني فايل calendar.rar)
قبلاً حل شده بود ولی خيلی جالبه كه بلاك شرطی كه مقدارش False هست، اجرا ميشه و با يه روش مسخره الان حل شد.
ممنون از توجهت.
نسخهی 2.0.2 كامپوننت تقويم شمسی :
- رفع اشكال تاريخ كبيسهی هجری خورشيدی و ميلادی
- ويژگی AutoCheck برای بررسی خودكار تاريخ در حين ورود(پيشنهاد ميكنم فايل راهنما رو برای اين ويژگی مطالعه كنيد)، تقريباً همون MaskEdit هست.
سورس، مثال و فايل راهنمای كامپوننت تقويم رو ميتونيد از اينجا دانلود كنيد.
سلام. آقاي خرسندي در مورد كامپوننت تقويم چهار تا پيشنهاد داشتم:
1. اگر شماره هر روز به صورت وسط چين داخل سلول خود قرار داشته باشند بهتره.
2. اگر رنگ قرمز روزهاي تعطيل يه كم پررنگتر باشه كه بيشتر مشخص باشه بهتره.
3. اگر تاريخ امروز رو كه پايين كامپوننت نوشته ميشه در حالت شمسي با فونت فارسي و در حالت ميلادي با فونت انگليسي نوشته ميشد بهتر بود.
4. اگر امكان تغيير رنگ قسمتهاي مختلف كامپوننت رو اضافه ميكردين خيلي خوب بود. البته در قسمت Object Inspector چند قسمت براي تغيير رنگ وجود داره كه با تغيير دادنشون رنگ هيچكدام از قسمتهاي كامپوننت تغيير نميكنه.
با تشكر مجدد از شما به خاطر كامپوننت خوبي كه طراحي كردين.
من همين الان تست كردم، مشكلی نداره، ولی به هرحال اين رو هم ميتونی امتحان كنی :
Solar Calendar Package