View Full Version : گفتگو: جلوگيري از تايپ حروف
p30vahid
سه شنبه 17 شهریور 1388, 22:35 عصر
چطور مي توان ار تايپ كردن حروف در باكسي جلوگيري كرد به نحوي كه فقط در آن بتوان اعداد را تايپ نمود؟
dadsara
چهارشنبه 18 شهریور 1388, 09:14 صبح
سلام
در تنظیمات فیلد در قسمت فرم InputMask می توانید استفاده کنید
amirzazadeh
چهارشنبه 18 شهریور 1388, 09:18 صبح
چطور مي توان ار تايپ كردن حروف در باكسي جلوگيري كرد به نحوي كه فقط در آن بتوان اعداد را تايپ نمود؟
دوست كافيه فرمت فيلد يا تكست باكس مربوطه رو از نوع عددي( general number) انتخاب كنيد.
.......................
موفق باشيد
nabeel
جمعه 20 شهریور 1388, 10:56 صبح
سلام
از کد زیر استفاده کنید
این روش در هر حالتی جوابگو بوده و نقائص دو روش قبلی رو نداره
Private Sub txtSample_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case 48, 49, 50, 51, 52, 53, 54, 55, 56, 57
Case Else
KeyCode = 0
End Select
End Sub
روش یک جوابگو هست ولی ناقصه چرا که طول عدد ممکنه مشخص نباشه , شما در صورت تعیین ماسک مقید به ورود با طولی ثابت هستید
روش دوم هم چندان مناسب نیست چرا که کاربر پس از ورود متوجه عدم مجاز بودن ورود عدد میشه
موفق باشید
smderfan
جمعه 20 شهریور 1388, 16:28 عصر
سلام
در رویداد Before Update از کد زیر استفاده کنید :
If IsNumeric(Textx.Value) = False Then
Msgbox "داده ورودی معتبر نمی باشد. لطفاً عدد وارد نمایید."
Cancel = -1
End If
amirzazadeh
شنبه 21 شهریور 1388, 11:34 صبح
سلام
از کد زیر استفاده کنید
این روش در هر حالتی جوابگو بوده و نقائص دو روش قبلی رو نداره
Private Sub txtSample_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case 48, 49, 50, 51, 52, 53, 54, 55, 56, 57
Case Else
KeyCode = 0
End Select
End Sub
موفق باشید
كد ارائه شده توسط جناب nabeel هم خالي از اشكال نيست به دلايل زير:
-كليدهاي سلكت شده فقط اعداد بالاي حروف، صفحه كليد بوده كه كاربران معمولا از كي پد براي وارد كردن اعداد استفاده ميكنند.
-در كد ارائه شده بقيه كليد ها كاملا از مدار خارج ميشوند بنابراين در صورت نياز به تصحيح اعداد كاربر با مشكل مواجه خواهد شد.
-پس از ورود عدد براي انتقال به فيلد بعدي كليد اينتر يا تب جوابگو نخواهد بود.
در مجموع اگر كد نويسي مد نظر باشد كد ارائه شده توسط جناب smderfan به دليل استفاده از توابع داخلي اكسس موجز تر و مفيد تر خواهد بود.
........................
موفق باشيد
nabeel
شنبه 21 شهریور 1388, 16:16 عصر
سلام
كد رو اصلاح کردم
Private Sub txtSample_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 97, 98, 99, 37, 9, 39, 100, 101, 102, 103, 104, 105, 110, 13, 8
Case Else
KeyCode = 0
End Select
End Sub
موفق باشید .
nabeel
شنبه 21 شهریور 1388, 16:41 عصر
سلام به دوستان
بیایم نگاه دقیقتری به کد ارائه شده و روش پیاده سازی شده در اون داشته باشیم
این روش بدون هیچ شک و شبه ای از روشهای ارائه شده دیگه کاملتره که در ادامه نگاهی به برخی مسائل اون دارم :
صورت مساله ممکنه مرتباً تغییر پیدا کنه , سئوالات رو تغییر میدیم تا ببینیم کدوم یک از اون روشها قادر به پاسخگویی به تمامی اونها هستند :
کاربر تنها بتواند حروف را وارد نماید
کاربر تنها بتواند حروف A,B,C را وارد نماید
کاربر نتواند از علائم غیر مجاز اعلام شده از سوی شما استفاده کند
و بسیاری حالتهای دیگر که تنها این روش در مقابل روشهای دیگر کارآمدی خود را نشان خواهد داد .
در بین طیف برنامه نویس پیشرو شعاری وجود داره Be Smart
استفاده از این کد قدمی هر چند کوچک به این سمته , قدمی که در کنار دیگر قدمهای کوچک مشابه منجر به متمایز شدن محصول شما از دیگران میشه
کاربر پس از اینکه کلی دکمه رو تایپ کرد متوجه نمیشه که نباید تایپ میکرد . برنامه به صورت هوشمندانه از انجام این امر به صورت همزمان جلوگیری به عمل میاره .
بهتره همیشه با بهترین روش آشنا بشید و همیشه با اون کار کنید
همیشه ارزش یک آچار فرانسه از یک آچار تخت بیشتر بوده , چرا که مشکل گشا تره
موفق باشید
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.