PDA

View Full Version : الزام به ورود اطلاعات نوع عدد در فیلدی از نوع تکست



abdoreza57
پنج شنبه 05 بهمن 1391, 10:18 صبح
سلام


همانطور که میدونید برای پیشگیری از خطای ورود نوع داده تو فرم از کد زیر استفاده میشه

Private Sub Form_Error(DataErr As Integer, Response As Integer)
Select Case DataErr
Case 2113
MsgBox " نوع داده اشتباه است "
End Select
Response = 0
End Sub

مطلبی که به ذهنم رسید اینه در صورتی که نوع فیلد تیبل تکست باشه و بخواهیم تو فرم ورود اطلاعات کاربر را ملزم به ورود تنها عدد تو فیلد مربوطه کنیم چه کدی لازم هست ؟


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

Abbas Amiri
پنج شنبه 05 بهمن 1391, 11:34 صبح
سلام
مسلما ساده ترین راه ایجاد InputMask با فرمت چندتا 9 هست . مثل 999999999 که تعداد ارقام بستگی به بزرگترین عدد قابل پذیرش است .
ولی یک عیب خیلی کوچیک داره که بعضی خوشایندشان نیست و آنهم نمایش کاراکتر UnderLine "_______" است وضمنا هرجاکلیک کنید، مکان نما همانجا مینشیند . (این آخری با کدنویسی قابل درمان است)
راهی که من استفاده می کنم استفاده از یک تابع برای بررسی کلیدهای فشرده شده ( اعم از عدد و ویرایش و Copy, Paste, Cut و ...) در رویداد Text_KeyDown است .



Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If Not NumericKey(KeyCode, Shift) Then
KeyCode = 0
End If
End Sub


' ************************************************** **********
' This function includes these Keys:

' Numeric keys, BackSpace, Delete, Home, End, ArrowKeys
' Return, Tab, Ctrl + (V, C, X, Z)
' ************************************************** **********
Function NumericKey(KeyCode As Integer, Shift As Integer) As Boolean
If (KeyCode > 34 And KeyCode < 41) Or (KeyCode > 44 And KeyCode < 58) Or _
(KeyCode > 95 And KeyCode < 106) Or KeyCode = vbKeyBack Or _
((Shift = acCtrlMask) And (KeyCode = vbKeyC Or KeyCode = vbKeyV Or KeyCode = vbKeyX Or KeyCode = vbKeyZ)) _
Or KeyCode = vbKeyReturn Or KeyCode = vbKeyTab Then
NumericKey = True
End If
End Function


بهتره فانکشن در یک ماژول کپی شود تا برای همه فرمها قابل دسترس باشد.
ضمن اینکه اگه یک عبارت تکست در تکست باکس Paste شود ، در اینجا هیچ کنترلی بروی آن نیست و میشه درساده ترین روش در رویداد Change آن را مدیریت کرد

abdoreza57
پنج شنبه 05 بهمن 1391, 15:05 عصر
سلام

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


یک کلام و تمام ! ...


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

نوبت به سخنرانی ابو سعید رسید او از سخنرانی خود داری کرد مردم که به مدت یک ساعت در مسجدبودن و خسته شده بودند شروع به اعتراض کردند ابو سعید پس از مدتی گفت هر انچه که من میخواستم بگویم شاگردم به شما گفت، شما یک قدم به جلو حرکت کنید تا خدا ده قدم به شما نزدیک شود.


خدا نگهدار

Abbas Amiri
جمعه 06 بهمن 1391, 13:53 عصر
سلام

میتونید از این روش (http://cpsd.ir/forum/showthread.php?tid=311) هم استفاده کنید

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

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