ايران ويج

نسخه‌ی کامل: یه تقویم توپ با اعلام رویدادها
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2 3
عید فطر تو بعضی کشورها یه روز قبل یا بعد از کشور ما برگزار میشه.
با این حساب آیا میشه یه تقویم قمری ساخت که حداقل تو کشور خودمون درست جواب بده.
آخه تو کشور خودمون هم رو اول و آخر ماه رمضون بحث هست.
اگه تقویم قمری در کار بود که دیگه از اینجور بحث ها وجود نداشت.
تکلیف من که میخوام یه برنامه درست کنم چیه؟
یه برنامه که رویدادهای تاریخی رو اعلام کنه.
پیش اومده براتون بشینید پای کامپیوتر ترانه گوش بشید بعد متوجه بشید اون روز شهادت بوده؟
اهمیت برنامه ای که میخوام با استفاده از تقویم قمری بنویسم اینجا مشخص میشه.
برا رویدادهایی مثل تولد دوستان هم که مشکلی وجود نداره. من مبدل میلادی به شمسی و برعکسش رو نوشتم. (در واقع خیلی ها نوشتن)
یه برنامه بود اینجا ولی محاسبات وحشتناکی داشت. یک روز هم جلو بود. 24 رمضان رو 25 رمضان نشون میداد.

ممنون میشم اگه این نکات رو با دقت مطالعه بفرمایید.


بگذریم. من از تقویم قمری خود VB استفاده کردم و برنامه رو هم نوشتم.
برنامه ظاهر ساده ای داره. به نظرتون ظاهر سادش میتونه باعث محبوبیتش بشه؟
ولی نحوه نمایش رویدادها به نظر خودم زیاد جالب نیست.
علاوه بر اون چند تا عملکرد ویژه هم هست که چون خیلی کاربرد ندارند نمی دونم کجای برنامه بگنجونمشون.
1ـ نقل و انتقال اطلاعات:
ممکنه کسی بخواد توی وارد کردن رویدادهای به من کمک کنه. فیلد Exported برای رویدادهایی رو که اون وارد می
سلام مهندس
فايل اجرايي رو كه باز مي كنم اين پيغامو مي ده :

[تصویر:  5yyhcm.jpg]
یه تشکر حسابی به علی آقا بدهکار شدم.
[تصویر:  Korea%20Thanks.gif]
اومدم اون خطا رو برطرف کنم. متوجه کلی اشکال دیگه هم شدم که اصلاحشون کردم.
امیدوارم این دفعه دیگه خطا نده.
اگه خطا نداد بریم که رو برنامه کار کنیم و مشکلاتش رو مطرح کنیم.
راستی سورسش رو هم گذاشتم.
راستی برا عملیات ویژه ای که تو پست 1 گفته بودم، فعلا یه دکمه گذاشتم رو فرم اصلی تا ببینیم بعد چی میشه.
باز هم فایل ضمیمه به پست های بعدی منتقل شد.
مجتبي جون ما رو شرمنده مي كني . من به عنوان يه كاربر معمولي كه برنامه نويسي هم بلد نيست ديدم اينطوري شد .

مهندس هنوز هم همون پيغام قبلي رو مي ده .

نكته : اين MDB كه كنارش هست فايل هاي بانك اطلاعات ACCESS نيست .
چون من ACCESS تو سيستم نصب ندارم . شايد واسه همونه .
بانک اطلاعاتی رو پر کردم. (تمام اطلاعات تقویمی)
مشکل ScrollBar رو برطرف کردم. تجربه: ScrollBar که RightToLeft بشه ممکنه قاطی کنه و جای Min و Max عوض بشن.
یه جستجوی باحال بهش اضافه کردم. (فقط یه جعبه متن)
نحوه نمایش اطلاعات رو حسابی روش کار کردم که باید ببینید. (نمایش تمام اطلاعات رو بزنید بعد اندازه فرم رو تغییر بدید ببینید چی میشه)
گزینه هایی مربوط به StartUp و بستن خودکار پنجره نمایش رویدادها اضافه کردم.
روزی رو که انتخاب می کنید UnderLine میخوره که واقعا ویژگی بدرد بخوریه.
نکته: برای جستجوی چند کلمه ای، بین کلمات ستاره بذارید.
مثال: جستجو برای تعطیلی هایی که شهادت هستند؛ بنویسید: شهادت*تعطيل

یه خطای منطقی خیلی ناجور داشت که از اعلام رویدادها جلوگیری می کرد و تمام رویدادها رو اعلام شده فرض می کرد.
مهمترین تغییری که دادم اصلاح این خطا بود. (شرمنده اون 3 نفری که دانلود کردن)
علاوه بر اون ماوس رو روی هر روزی که نگه دارید معادل اون روز رو به شمسی و قمری و میلادی نشون میده.
اگه بجای نمایش تاریخ نوشت: چنين تاريخي نداريم، تعجب نکنید (البته تو روزای آخر بعضی ماه ها).
یکم فکر کنید متوجه علت میشید.
این برنامه شبیه یک تقویم هست ولی تقویم نیست.
توی تقویم میشه سال رو هم تغییر بدید ولی تو این برنامه فقط سال جاری در نظر گرفته میشه که اون هم از تاریخ سیستم خونده میشه.
من يه مدتيه ميخوام همچين چيزي بنويسم ولي هنوز وقت نكردم. بگذريم.
تاريخ قمري رو به هيچ وجه نميشه محاسبه كرد. به خاطر اين اول و آخر رمضون. اين بايد دستي تنظيم بشه. يا تعداد روزهاي ماه رمضان و شعبانو از كاربر ميگيري يا مثل ماكروسافت يه عدد بين 0 تا 2 از كاربر ميگيري كه بر اساس اون تعداد روزا رو تنظيم كني. (يه نوع تقويم به نام UmAlQura وجود داره كه اين رمضونشم قابل مجاسبه است. همه چيزش هم مثل همين تقويم هجري قمريه ولي اون نيست!)

خب مشكلات برنامه:
1- ساده بودن خوبه منم هميشه از برنامه هاي ساده خوشم مياد ولي اين ديگه زيادي ساده است. حداقل بايد يه شمايل XP مانندي داشته باشه.
2- اين كليد ستاره پايين دقيقا چي كاري ميكنه؟
3- وقتي بين تقويم ها سوئيچ ميكنيم بايد روز انتخاب شده در تقويم قبلي توي تقويم بعدي نمايش داده بشه نه امروز
4- يه دكمه براي رفتن به امروز كم داره.
5- دكمه امروز يه فرقي با روزاي ديگه بايد داشته باشه تا معلوم بشه.
6- بهتره رويدادهاي هر سه تقويمو توي همون يه تكست نشون بديد
7- جستجوت بدرد نميخوره. چون فقط اولين رويداد تطبيق يافته رو مياره. باقيش؟. در ضمن اين كه فقط توي رويدادهاي تقويم شمسي ميگرده.
8- ما righttoleft يما. چرا تقميمو برعكس زدي؟
9- عنوان پنجره هم بدرد نميخوره. يا عوضش كن يا يه چيز ديناميك بزار.
10- حذف رويدادهاي تكراري خطا داد
11- نحوه نمايش تمامي رويداد ها جالب نيست
12- به نظر من "فراموش کردن رويدادهاي صادر شده"، "فراموش کردن رويدادهاي اعلام شده" ، "حذف رويدادهاي تکراري از پايگاه داده" چيز اضافييه و فقط كاربرو گيج ميكنه. اين كارا رو بايد خود برنامه بصورت اتوماتيك انجام بده.
13- عموما رويدادها اعلام نميشند. فوقش اول بالا اومدن كامپيوتر يا اگه كامپيوتر روشنه توي اول روز بعد پنجره رويدادهاي امروز نشون ميدي. بعد كاربر ميتونه خودش مشخص كنه كه فلان رويداد رو به من اعلام كن و نوعشو مشخص كنه.
14- كاربر الان نميتونه خودش مشخص كنه كه فلان رويداد رو به من اعلام كن و نوعشو مشخص كنه.
15- رويدادها نبايد درجا ويرايش بشند. اين صفحه براي نمايشه. ميتونيد يه فرم ديگه بزاريد براي ويرايش و افزودن رويدادها. و يه فرم ديگه براي يادداشت روزانه
16- در كل محيط برنامه چنگي به دل نميزنه.
17- روزهاي تعطيل رو هم يه رنگي بزني بد نيست.
18- قضيه اين tbl2 توي پايگاه دادت چيه؟
اين از ايرادات و انتقادات.

اين براي قبل از اين پست آخريه. برنامه جديدو الان ميگيرم.
نقل قول: من يه مدتيه ميخوام همچين چيزي بنويسم ولي هنوز وقت نكردم.
اتفاقا من هم کیبوردم خراب بود. خواستم ایده اش رو بندازم تو سایت بچه ها درست کنن تا بعدا که یه کیبورد بخرم. ولی نمی دونم چی شد که تا اینجا پیش اومدم.
نظرتون راجع به این چیه:
[تصویر:  4p1xzeo.gif]
برای موبایله این هم آدرسش
گمونم همچین چیزی تو ذهتون بوده. ولی من نمی خواستم یه تقویم (سال و روز و ماه) درست کنم. فقط میخواستم یه برنامه برا اعلام رویدادها درست کنم (فلان روز از فلان ماه چه خبره بدون در نظر گرفتن سال)

نقل قول: 1- ساده بودن خوبه منم هميشه از برنامه هاي ساده خوشم مياد ولي اين ديگه زيادي ساده است. حداقل بايد يه شمايل XP مانندي داشته باشه.
'گذاشتم براش. یعنی واسه شما با همون تم قدیمی ظاهر شده؟
نقل قول: 2- اين كليد ستاره پايين دقيقا چي كاري ميكنه؟
مثل موقعی که برنامه با سوئیچ -quiet اجرا میشه عمل میکنه و رویدادهای اون روز رو اعلان میکنه. البته هر رویداد بطور پیشفرض فقط یکبار توی روز اعلام میشه (اولین باری که ویندوز بالا میاد). یه سری رویدادهای دیگه هم هستند که براشون تعیین شده از چند روز قبل اعلام بشن. مثلا اگه رویدادی مربوط به 30 مهر باشه و براش تعیین کنی از 10 روز قبل اعلام بشه، از 20 مهر تا 30 مهر هر روز اعلام میشه.
نقل قول: 3- وقتي بين تقويم ها سوئيچ ميكنيم بايد روز انتخاب شده در تقويم قبلي توي تقويم بعدي نمايش داده بشه نه امروز
4- يه دكمه براي رفتن به امروز كم داره.
5- دكمه امروز يه فرقي با روزاي ديگه بايد داشته باشه تا معلوم بشه.
6- بهتره رويدادهاي هر سه تقويمو توي همون يه تكست نشون بديد
این که شد یه تقویم.
اگه برنامه قرار باشه یه تقویم بشه اونوقت باید امکان تعویض سال رو هم براش بذاریم.
البته مورد 3 و 4 و 5 رو میشه خیلی سریع انجام داد. ولی تعویض سال یکم وقت گیره.
نقل قول: 7- جستجوت بدرد نميخوره. چون فقط اولين رويداد تطبيق يافته رو مياره. باقيش؟. در ضمن اين كه فقط توي رويدادهاي تقويم شمسي ميگرده.
جستجوش خوب کار میکنه. شما این مطلب رو که جدیداً به راهنمای نرم افزار اضافه کردم بخون:
براي جستجو، عبارت مورد نظر را وارد کرده و Enter بزنيد. اولين مورد جستجو مي شود
در صورتي که عبارت را تغيير ندهيد با زدن Enter مورد بعد يافت خواهد شد
اين عمل تا آخرين مورد ادامه يافته و پس از رسيدن به مورد آخر، سؤالي ظاهر مي شود
در صورت نياز ميتوانيد با پاسخ مثبت به آن سؤال، جستجو را از ابتدا آغاز کنيد.
اگر عبارت مورد جستجو را تغيير دهيد، جستجو از اول انجام خواهد شد.

نقل قول: 8- ما righttoleft يما. چرا تقميمو برعكس زدي؟
باشه شنبه رو میذارم سمت راست.
نقل قول: 9- عنوان پنجره هم بدرد نميخوره. يا عوضش كن يا يه چيز ديناميك بزار.
سورسش که هست. اگه زحمتش رو بکشید یا سلیقتون رو در اختیار م بذارید، این مورد هم حل میشه.
نقل قول: 10- حذف رويدادهاي تكراري خطا داد
روش کار کردم. ممکنه دیگه خطا نده. فیلد Event رو هم Memo کردم.
نقل قول: 11- نحوه نمايش تمامي رويداد ها جالب نيست
میشه روی رنگ و فونتش کار کرد اما چیدمان پویای لیبیل ها با تغییر اندازه فرم فکر کنم همینجوری خوبه.
نقل قول: فراموش کردن رويدادهاي صادر شده
برا کسایی که اطلاعات رو جابجا می کنن خوبه. ولی ممکنه حذف بشه.
نقل قول: فراموش کردن رويدادهاي اعلام شده
واقعا اضافه س.
نقل قول: حذف رويدادهاي تکراري از پايگاه داده
هنگام ورود داده ها بطور خودکار انجام میشه ولی موقعی که تو جعبه متن تایپ می کنیم انجام نمیشه. به نظرت چه موقع باید متن فیلد Events رو کنترل کنیم؟
نقل قول: 13- عموما رويدادها اعلام نميشند. فوقش اول بالا اومدن كامپيوتر يا اگه كامپيوتر روشنه توي اول روز بعد پنجره رويدادهاي امروز نشون ميدي. بعد كاربر ميتونه خودش مشخص كنه كه فلان رويداد رو به من اعلام كن و نوعشو مشخص كنه.
14- كاربر الان نميتونه خودش مشخص كنه كه فلان رويداد رو به من اعلام كن و نوعشو مشخص كنه.
درست متوجه نشدم. یکم دیگه توضیح بده. فقط میتونم بگم هر رویداد فقط با اولین بالا اومدن ویندوز اعلام میشه مگر اینکه بعد از عنوان رویداد یه علامت = بذاری بعدش هم علامت + مثلاً:
عید سعید فطر = +
نقل قول: 15- رويدادها نبايد درجا ويرايش بشند. اين صفحه براي نمايشه. ميتونيد يه فرم ديگه بزاريد براي ويرايش و افزودن رويدادها. و يه فرم ديگه براي يادداشت روزانه
کل سادگی برنامه به همین قسمتشه!
نقل قول: 16- در كل محيط برنامه چنگي به دل نميزنه.
برا همین گذاشتم اینجا که روش کار بشه.
نقل قول: 17- روزهاي تعطيل رو هم يه رنگي بزني بد نيست.
اگه بخوایم دکمه ها رو رنگی کنیم بجای Button بهتره از PictureBox + گرادیانت یا یه عکس استفاده بشه. فکر خوبیه فقط بذاریدهر وقت فرصت شد.
نقل قول: 18- قضيه اين tbl2 توي پايگاه دادت چيه؟
اگه رویدادی تو این جدول ثبت بشه یعنی اینکه یکبار اعلام شده و دیگه نباید تو اون روز اعلام بشه. من فکر کردم رویدادهایی که مهم نیستن یکبار اعلام بشن کافیه. در هر حال یه علامت + بعد از = بذاری اون رویداد تا آخر همون روز، هز وقت ویندوز بالا اومد نمایش داده میشه.

سپاس فراوان.

فایلی رو که با PowerRap مثلا StandAlone شده بود رو سیستمی که VB نصب نیست اجرا کردم ولی گفت نمیتونه فایل MSJTER35.DLL رو Load کنه. کسایی که VB رو سیستمشون نصب نیست بگن خطا داده یا نه. ممنون میشم.

یه سری از خطاها رو برطرف کردم. دانلود کنید.

فایل پیوست به پست های بعدی منتقل شد!
مهندس هنوز هم همون پيغام قبلي رو مي ده .
تجربه: خاصیت Height هیچ آبجکتی توی VB نمیتونه بیشتر از 16383 پیکسل باشه. احتمالا خاصیت Width هم همینجور باشه.
2 به توان 14 منهای 1 = 16383
برنامه از «آگاه ساز رویدادهای تاریخی» به «تقویم سه گانه» تغییر کاربری داد. آخه سال رو هم بهش اضافه کردم.
فعلا ویرایش رویدادها رو غیر فعال کردم و یه جعبه متن گذاشتم بجاش که رویدادهای شمسی و قمری و میلادی رو یکجا نشون میده.
جستجو هم یه تغییری تو همین مایه ها کرده.
ظاهر برنامه رو هم الکی خوشگلش کردم. یه جورایی آزمایشیه. اصلا رو ظاهرش حساب نکنید. هر کی خواست زحمت زیباسازی برنامه رو بکشه به نکات زیر توجه کنه:
عرض عکس ها باید 4 پیکسل کوچیکتر از متغیر ButtonWidth باشه
ارتفاع عکس ها باید 4 پیکسل کوچیکتر از متغیر ButtonHeight باشه
اون دو متغیری که گفتم در واقع ثابت (Const) هستند نه متغیر ولی با توجه به سایز دلخواهتون باید تغییرشون بدید.
توی عکسها نباید از «رنگ تعریف شده برای رنگ زمینه فرم اصلی» استفاده بشه. در صورت نیاز مقدار frmMain.BackColor رو تغییر بدین.

هر تغییری تو ظاهر برنامه به نظرتون خوب بود اعمال کنید و پروژه رو آپلود کنید که ببینیم.

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

به راهنمای برنامه مطالب جدیدی اضافه کردم.

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

ویرایش و حذف و اضافه کردن رویدادها هم آماده شده. البته یه زیر آبی هم رفتم:
روزهای خاصی مثل 30 اسفند و 2 فوریه و ... رو به کاربر اجازه ندادم که رویدادی توشون وارد کنه (به بزرگی خودتون ببخشید).

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

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

پیوست جدید در پست شماره 23
Package نصب برنامه با حجم 5.3MB در پست شماره 16
حالا بلاخره اين برنامه چي شد؟ اگه ميشه يه تعريف دقيق ازش بديد.
سلام مهندس

اين برنامه جديدرو كه اجرا كردم پيغام زير اومد .

[تصویر:  2ev52m8.jpg]

بعدش هم فايل هاي Event Notifier.mdb و Event Notifier.uzy و Help.txt هم در كنار برنامه درست شدند كه Event Notifier.uzy مخفي بود .

دوباره برنامه رو اجرا كردم باز همون پيغام قبلي اومد .
صفحه‌ها: 1 2 3