PDA

View Full Version : سوال: وارد کردن فقط حروف یا عدد در یک text یا label



bugattis
پنج شنبه 09 مهر 1388, 16:00 عصر
توی برنامه ام یه text ی هست برای دریافت نام و فامیلی می خوام طوری طراحیش کنم که
فقط حروف فارسی رو قبول کنه
یه text دیگه ای هم هست برای دریافت شماره تلفن می خوام طوری باشه که فقط عدد رو دریافت کنه اگه حروف وارد شد خطا بده:اشتباه:

Tasiyan
پنج شنبه 09 مهر 1388, 16:40 عصر
چگونه می شود کار کرد که فقط بشه تو تکست باکس عدد وارد کرد ؟ (http://barnamenevis.org/forum/showthread.php?t=164391&highlight=%D8%B9%D8%AF%D8%AF)

ironclip
پنج شنبه 09 مهر 1388, 20:29 عصر
چگونه می شود کار کرد که فقط بشه تو تکست باکس عدد وارد کرد ؟ (http://barnamenevis.org/forum/showthread.php?t=164391&highlight=%D8%B9%D8%AF%D8%AF)

با سلام

برای این کار text را locked برابر true کنید ........

بعد این کد را وارد کن :


Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 48 Then
Text1.Locked = False
ElseIf KeyAscii = 49 Then
Text1.Locked = False
ElseIf KeyAscii = 50 Then
Text1.Locked = False
ElseIf KeyAscii = 51 Then
Text1.Locked = False
ElseIf KeyAscii = 52 Then
Text1.Locked = False
ElseIf KeyAscii = 53 Then
Text1.Locked = False
ElseIf KeyAscii = 54 Then
Text1.Locked = False
ElseIf KeyAscii = 55 Then
Text1.Locked = False
ElseIf KeyAscii = 56 Then
Text1.Locked = False
ElseIf KeyAscii = 57 Then
Text1.Locked = False
ElseIf KeyAscii = 8 Then
Text1.Locked = False
Else
Text1.Locked = True
End If
End Sub


---------------------------------------

برای مثال به صورت دستی می خواهیم بفهمیم alt+48 چه عددی است تا Alt+50 ...


alt + 48 = 0
alt + 49 = 1
.
.
.
.
.
.
.
alt + 57 = 9

pcdownload.bloghaa.com
جمعه 10 مهر 1388, 00:30 صبح
بهترین راه استفاده از کد زیر است :

یک تکست باکس در فرم قرار داده و کد زیر را در قسمت کد برنامه وارد کنید:

Private Declare Function GetWindowLong Lib "user32" _
Alias "GetWindowLongA" _
(ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias _
"SetWindowLongA" _
(ByVal hwnd As Long, ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Const GWL_STYLE = (-16)
Const ES_NUMBER = &H2000&

Public Function SetNoNumbers(txt As TextBox, Flag As Boolean)
Dim curstyle As Long
Dim newstyle As Long
curstyle = GetWindowLong(txt.hwnd, GWL_STYLE)
If Flag Then
curstyle = curstyle Or ES_NUMBER
Else
curstyle = curstyle And (Not ES_NUMBER)
End If
SetNoNums = SetWindowLong(txt.hwnd, GWL_STYLE, curstyle)
txt.Refresh
End Function

Private Sub Form_Load()
Text1 = ""
Call SetNoNumbers(Text1, True)
End Sub

pcdownload.bloghaa.com
جمعه 10 مهر 1388, 01:27 صبح
اگه فکر می کنی کد بالا طولانیه:
کد زیر معجزه میکنه.

Private Sub Text1_KeyPress(KeyAscii As Integer)
If Not IsNumeric(Chr(KeyAscii)) Then KeyAscii = 0
End Sub

vbhamed
جمعه 10 مهر 1388, 02:50 صبح
سلام
اين راه هم براي ورود كاراكترهاي فارسي
هر چيز ديگه اي كه خواستي برنامه اجازه بده، تو رشته f قرار بده
كليدهاي مجاز ديگه رو هم تو خط Select Case بنويس


Private Sub Text1_KeyPress(KeyAscii As Integer)

On Error Resume Next

Dim f$, find%, i%

f = "ابپتثجچحخدذرزژسشصضطظعغفقك گلمنوهيئؤ"

For i = 1 To Len(f)
If KeyAscii = Asc(Mid(f, i, 1)) Or KeyAscii = AscW(Mid(f, i, 1)) Then
find = 1
Exit For
End If
Next

Select Case KeyAscii
Case vbKeySpace, vbKeyBack, vbKeyDelete, vbKeyReturn, vbKeyUp, vbKeyDown, vbKeyLeft, _
vbKeyRight, vbKeyPageDown, vbKeyPageDown, vbKeyHome, vbKeyEnd, vbKeyInsert
find = 1
End Select

If find = 0 Then KeyAscii = 0

End Sub

xxxxx_xxxxx
شنبه 11 مهر 1388, 00:04 صبح
پست ها و تاپیکهای مشابه:
http://barnamenevis.org/forum/showthread.php?t=175916
http://www.barnamenevis.org/forum/showpost.php?p=687847&postcount=14
http://www.barnamenevis.org/forum/showpost.php?p=688697&postcount=29
http://www.barnamenevis.org/forum/showpost.php?p=696312&postcount=43