PDA

View Full Version : سوال: تشخيص حرف يا عدد در يك string



saba_rgh
دوشنبه 05 مرداد 1388, 14:58 عصر
سلام
كد يا function اي تو vb هست كه وجود عدد يا حرف را در يك textbox مشخص كنه؟
ممنون

xxxxx_xxxxx
دوشنبه 05 مرداد 1388, 15:13 عصر
سلام،
منظورتون اينه كه ببينه تكست باكس خالي هست يا نه؟
يا اين كه حروف رو از اعداد تشخيص بده؟

saba_rgh
دوشنبه 05 مرداد 1388, 15:25 عصر
سلام،
منظورتون اينه كه ببينه تكست باكس خالي هست يا نه؟
يا اين كه حروف رو از اعداد تشخيص بده؟

وقتي محتويات يك textbox رو ميگيره تشخيص بده كه توي اعداد حرف هم وجود داره يا نه؟
در واقع مي خوام كنترل كنم كه فقط اعداد وارد textbox بشن و اگر حرف وارد شد پيغام بده؟
ممنون

xxxxx_xxxxx
دوشنبه 05 مرداد 1388, 15:40 عصر
مي تونيد از رويداد Validate استفاده كنيد. قبلاً (http://www.barnamenevis.org/forum/showpost.php?p=687461&postcount=7)VBhamed اين رويداد رو معرفي كردند. به اين صورت استفاده كنيد:


Private Sub Text1_Validate(Cancel As Boolean)
If IsNumeric(Text1.Text) = False Then MsgBox "Only Number", vbExclamation: Cancel = True
End Sub
در اين صورت تا زماني كه محتواي TextBox فقط عدد نباشد فكوس از آن خارج نمي شود.

و براي اين كار روشهاي مختلفي وجود داره، مثلاً يكي اينجا (http://www.barnamenevis.org/forum/showpost.php?p=688697&postcount=29) و يكي هم اينجا (http://www.barnamenevis.org/forum/showpost.php?p=687847&postcount=14) . يكي ديگه اينجا (http://www.barnamenevis.org/forum/showpost.php?p=696312&postcount=43). و يك راه جالب ديگه هم اينجا (http://www.barnamenevis.org/forum/showpost.php?p=687847&postcount=14)

نتيجه گيري: قبل از ايجاد تاپيك ابتدا جستجو كنيد.:چشمک:

saba_rgh
دوشنبه 05 مرداد 1388, 15:57 عصر
مي تونيد از رويداد Validate استفاده كنيد. قبلاً (http://www.barnamenevis.org/forum/showpost.php?p=687461&postcount=7)VBhamed اين رويداد رو معرفي كردند. به اين صورت استفاده كنيد:


Private Sub Text1_Validate(Cancel As Boolean)
If IsNumeric(Text1.Text) = False Then MsgBox "Only Number", vbExclamation: Cancel = True
End Sub
در اين صورت تا زماني كه محتواي TextBox فقط عدد نباشد فكوس از آن خارج نمي شود.

و براي اين كار روشهاي مختلفي وجود داره، مثلاً يكي اينجا (http://www.barnamenevis.org/forum/showpost.php?p=688697&postcount=29) و يكي هم اينجا (http://www.barnamenevis.org/forum/showpost.php?p=687847&postcount=14) . يكي ديگه اينجا (http://www.barnamenevis.org/forum/showpost.php?p=696312&postcount=43). و يك راه جالب ديگه هم اينجا (http://www.barnamenevis.org/forum/showpost.php?p=687847&postcount=14)

نتيجه گيري: قبل از ايجاد تاپيك ابتدا جستجو كنيد.:چشمک:
ممنون ولي فكر كنم من بد توضيح دادمو من ميخوام تو textbox فقط عدد و بعضي از حروف وارد شود نه همه حروف مثلا فقط (تا) (و) (،) (-)(/) و اعداد وارد بشن؟

sohrab o
دوشنبه 05 مرداد 1388, 16:16 عصر
خوب اینکه کاری نداره چک کن ببین کد اسکی یا keycode وارد شده معتبر هست یا نه در اینصورت اونو با 0 برابر کن.معتبر یعنی اینکه اون حروفی که میخوای هست یا نه!
موفق باشی/

Tasiyan
دوشنبه 05 مرداد 1388, 16:19 عصر
چگونه می شود کار کرد که فقط بشه تو تکست باکس عدد وارد کرد ؟ (http://barnamenevis.org/forum/showthread.php?t=164391)
:لبخند:

xxxxx_xxxxx
دوشنبه 05 مرداد 1388, 16:21 عصر
يكي از همون روش هاي بالا رو ميتونيد توسعه بديد:


Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim valid As String
valid = "1234567890.تاو/-،"
If KeyAscii > 26 Then If InStr(valid, Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub

Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
If InStr(1, Text1.Text, "تت") <> 0 Then Text1.Text = Replace(Text1.Text, "تت", "ت")
If InStr(1, Text1.Text, "اا") <> 0 Then Text1.Text = Replace(Text1.Text, "اا", "ا")
If InStr(1, Text1.Text, "ات") <> 0 Then Text1.Text = Replace(Text1.Text, "ات", "تا")
...
...
...

End Sub

بجاي سه نقطه بايد ساير حالات رو بررسي كنيد.
اما از اونجايي كه مثلاً "تا" و "و" پشت سرهم نمي تونند بيان. يا شايد "/" و "،" نمي تونند پشت سرهم بيان بهتره كه فرمت براش تعيين كنيد.