ورود

View Full Version : چطور میشه یک textbox رو برای تاریخ تنظیم کرد / /



Armin62
جمعه 21 بهمن 1384, 02:33 صبح
سلام
من می خوام داخل برنامم یک textbox برای تاریخ داشته باشم که کاربر فقط اعداد رو وارد کنه و اسلش ها( / / ) خودش تایپ بشه

اگه کمک کنید ممنون میشم


تشکر...
آرمین

Yalda2005
جمعه 21 بهمن 1384, 02:50 صبح
باید از Mask استفاده کنی ...

!9999/99/99;1;_

Armin62
جمعه 21 بهمن 1384, 03:06 صبح
اگه منظورت همون فرمته با اون نمیشه این کار رو انجام داد (خودش / نمیزنه )
و اگر هم غیر از اینه اگه توضیح بدی ممنون میشم
و اگه فایل هم ضمیمه کنی دیگه منو شرمنده می کنی

تشکر...
آرمین

Yalda2005
جمعه 21 بهمن 1384, 03:11 صبح
ببین من می دونم که توی دلفی یه نوع MaskEdit هست که تو Mask اون اینو می نویسی ... و میشه ... معادلشو تو وی بی پیدا کن

Armin62
جمعه 21 بهمن 1384, 03:17 صبح
یک قسمت به نام DataFormat هست ولی هر کار کردم خودش / رو نمیزنه

Yalda2005
جمعه 21 بهمن 1384, 03:21 صبح
این جا رو هم ببین لطفاً :

http://www.barnamenevis.org/forum/showthread.php?t=24128&highlight=mask

Yalda2005
جمعه 21 بهمن 1384, 03:23 صبح
من از این لینک فهمیدم دقیقاً به همین نام در وی بی هم هست ... فقط باید دقت کنید

Armin62
جمعه 21 بهمن 1384, 03:43 صبح
تشکر از لطفتون
آرمین

Yalda2005
جمعه 21 بهمن 1384, 03:48 صبح
خواهش می کنم

Armin62
جمعه 21 بهمن 1384, 05:06 صبح
گفتم بهتر تاپیک بی جواب نمونه
با استفاده از این کد در خاصیت cheng یک TextBox تاریخ وارد شده خود ( / ) اسلش های مورد نیاز رو میزاره


If Len(Text1) = 2 Then
Text1 = "/" + Text1
End If
If Len(Text1) = 5 Then
Text1 = "/" + Text1
End If

Yalda2005
جمعه 21 بهمن 1384, 05:21 صبح
و اگه کاربر بعد از وارد کردن سال اضافه عدد وارد کرد؟

hadi2345
جمعه 21 بهمن 1384, 08:43 صبح
با سلام.
شما در خاصیت TextChange یا KeyPress یک تکست باکس به راحتی میتونین کنترل کنید که کاربر تاریخ رو صحیح وارد کنه . من کدی برای این کار نوشتم که کاربر در ورود سال یا ماه یا روز به هیچ وجه نمیتونه اطلاعات اشتباه وارد کنه . در مورد سال اگه کاربر با 13 شروع کنه که هیچی وگرنه مثلا اگه 8 وارد کنه خودش 13 رو به اول 8 اضافه میکنه و تبدیل به 138 میشه بعد از اینکه 4 عدد مربوط به سال رو وارد کرد یک / به آخر اون اضافه میشه . در مورد ماه بیشتر از 12 رو نمیتونه وارد کنه و اگه ماهی که وارد کرده جزو 6 ماه اول سال باشه کاربر برای روز 31 رو هم میتونه وارد کنه و اگه جزو 6 ماه دوم سال باشه بیشتر از 30 رو نمیتونه وارد کنه . حتی سال کبیسه رو هم برای ماه آخر باید در نظرگرفت تا تاریخی که کاربر وارد میکنه کاملا صحیح و درست باشه . من خیلی از برنامه ها رو دیدم که متاسفانه این مسئله رو اصلا رعایت نمیکنن و هنگام ذخیره اطلاعات یا هنگام LostFocus به کاربر هشدار میدن که تاریخ وارد شده نامعتبر میباشد . که کاربر باید دوباره برگرده و تاریخ رو اصلاح کنه . اصرار برای صحیح وارد کردن تاریخ بیشتر برای جستجوهای بین دو تاریخ مهمه که کاربر تاریخ رو باید صحیح وارد کنه تا جستجو درست عمل کنه .
من از این کد تو دات نت هم استفاده میکنم و تا حالا به اشکال برنخوردم .
موفق باشید .

bahar65
جمعه 21 بهمن 1384, 11:08 صبح
میتونید از کامپوننت mask edit استفاده کنید . از شی mask box می تونید استفاده کنید . داخل propertys اش یک خصوصیت به اسم mask داره داخل اون بنویسید ####/##/## اگر اینو بنویسید توی اجرا هم به صورت ــــ/ــ/ــ میاد و هر تاریخی که می خواید می تونید وارد کنید فقط اگر میخواید شمسی وارد کنه طرف براش کنترل بذارید.
ــــــــــــــ
به همین راحتی!

bahar65
جمعه 21 بهمن 1384, 11:09 صبح
یادم رفت که بگم این مسک باکس قیافش مثل textboxهستش و جای نگرانی نیست!

bahar65
جمعه 21 بهمن 1384, 11:11 صبح
این مسک باکس از نظر قیافه کاملا شبیه textbox هستش و جای هیچ نگرانی نیست!

Armin62
جمعه 21 بهمن 1384, 12:49 عصر
در پاسخ یلدا
در مورد اینکه کاربر بعد از تاریخ عدد دیگری نتونه وارد کنه میشه خاصیت MaxLength رو در TextBox به 8 در سال دو رقمی و 10 در سال 4 رقمی وارد کنی

هادی جان اگه کد های نوشته شده رو بزار تا بچه هام استفاده کنند

بهار جان اگه نام کامپوننت رو دقیق بنویسی ممنون میشم

تشکر ...
آرمین

bahar65
جمعه 21 بهمن 1384, 16:33 عصر
microsoft mask edit control
البته بستگی داره که شما vb رو کامل نصب کرده باشید یا خیر. باید اول که نصبش می کنید دقت کنید اونم نصب کنید.

bahar65
جمعه 21 بهمن 1384, 16:34 عصر
microsoft mask edit control 6.0

hadi2345
جمعه 21 بهمن 1384, 19:25 عصر
با سلام مجدد .
MaskEditBox یه مشکل داره و اونم اینه که اعداد به صورت انگلیسی نمایش داده میشن . مگر اینکه از یک فونت خاص استفاده کنید !! . آرمین جان کد رو به همراه یک برنامه تا فردا براتون میذارم .
موفق باشید .

Bithiah
جمعه 21 بهمن 1384, 21:35 عصر
دوستان گمون کنم اینکه چطوری می شه کاری کرد که MaskٍEdBox اعداد رو فارسی(در واقع هندی) نشون بده، قبلا یه جایی توی همین سایت نوشته شده بود. شما می تونین با یه کلک کوچولو اینکار رو انجام بدین و اون اینکه از یک فتحه یا کسره که براحتی دیده نمی شه در رشته Mask اون استفاده کنین. یعنی بجای ####/##/## بذارین َ####/##/##.
فقط یادتون نره که بعدا که با کد رشته رو می گیرین این کاراکتر رو بردارین. مثلا:

Replace(strDate, "َ", "")
البته اگه اشتباه نکنم آقای بابک زواری هم یه فونتی گذاشته بودند که با کمی تغییر روی فونت Tahoma، اعداد رو همیشه و همه جا هندی نشون می داد. یه سرچ بزنین پیدا می شه. اگه هم نشد، من فکر کنم یه جا دارم، بگین براتون آپلودش می کنم.

hadi2345
جمعه 21 بهمن 1384, 22:44 عصر
با سلام مجدد .
برنامه رو از لینک زیر بگیرید . البته یه تاپیک هم به همین منظور زدم تا دوستان ازش استفاده کنن.
http://www.barnamenevis.org/forum/attachment.php?attachmentid=2333&d=1139600383
موفق باشید .

Yalda2005
جمعه 21 بهمن 1384, 23:00 عصر
آقا دست شما درد نکنه

bahar65
جمعه 21 بهمن 1384, 23:19 عصر
bithiah جان عزیز
من این کاری که گفتین انجام دادم. اما اتفاقی نیفتاد . بازم اعداد انگلیسی بودن !

Armin62
شنبه 22 بهمن 1384, 01:21 صبح
هادی جان ممنون

مهران فروردین
شنبه 22 بهمن 1384, 01:42 صبح
سلام.
تایپ کردن اسلش ها برای کاربر زیاد مشکل نیست و حتی بهتر از تاپ کردن صفر قبل تاریخ روزها و یا ماههای یک رقمی است یعنی تایپ کردن 5/1/84 راحت تر از تایپ 05/01/84 است و کاربران معمولا نسبت به تایپ اسلش ها اعتراضی ندارند و تایپ با اسلش را نسبت با تایپ با صفر ترجیح می دهند ، مشکل اینجاست که در زمان تایپ تاریخ همراه با اسلش ، اپراتور مجبور است اول دو رقم سال و سپس ماه و در آخر روز را وارد کند چون عدد بعد از اسلش در TextBox در سمت راست اسلش قرار می گیرد و نه در سمت چپ آن و این مشکل با تنظیم خاصیت Right To Left=Ture نیز حل نمی شود اگر در این مورد پیشنهادی دارید لطفا بفرمایید. چه باید کرد که اپراتور ابتدا روز و بعد اسلش و سپس ماه و اسلش و در آخر دو رقم سال را وارد کند.

Armin62
شنبه 22 بهمن 1384, 02:12 صبح
دوست عزیزم مهران اگه به صفحه اول همین تاپیک بری و دهمین پست رو نگاه کنی کدی در اون هست که اگه اونو تو قسمت خاصیت Cheng یک textbox قرار بدی دقیقا خواسته شما رو برآورده میکنه .
واگر خواستی که اعداد اضافی تایپ نشه میتونی خاصیت MaxLength رو در Text Box از صفر به 8 تغییر بدی

و در مورد اینکه صفر خودش تایپ بشه باید گفت که این امر ممکن نیست چون مشخص نیست که کاربر قصد زدن چه تاریخی رو داره (غیر ممکن وجود نداره)

تشکر ...
آرمین

vahid alipor
جمعه 09 دی 1390, 22:29 عصر
آقا آرمین دستت درد نکه واقعا نیاز مند این مسئله بودم