मैं किसी पाठ बॉक्स नियंत्रण है कि केवल संख्यात्मक मान स्वीकार बनाना चाहते में संख्यात्मक मान को अनुमति देते हैं।केवल पाठ बॉक्स
मैं इस VB6 में कर सकते हैं?
मैं किसी पाठ बॉक्स नियंत्रण है कि केवल संख्यात्मक मान स्वीकार बनाना चाहते में संख्यात्मक मान को अनुमति देते हैं।केवल पाठ बॉक्स
मैं इस VB6 में कर सकते हैं?
पाठ बॉक्स पाठ Change
घटना में, जाँच करता है, तो दर्ज किया गया मान एक संख्या है। यदि यह संख्या नहीं है तो पुराने मान को फिर से सेट करें।
Dim textval As String
Dim numval As String
Private Sub TextBox1_Change()
textval = TextBox1.Text
If IsNumeric(textval) Then
numval = textval
Else
TextBox1.Text = CStr(numval)
End If
End Sub
चेक इस बाहर:
http://www.vbforums.com/showthread.php?t=350067
आप प्रत्येक कुंजी दबाने जांच करने की जरूरत है, या आप अंत में एक मान्यता कर सकते हैं।
नियंत्रण बॉक्स> घटक> नियंत्रण -> माइक्रोसॉफ्ट मास्क संपादित नियंत्रण 6.0 पर राइट क्लिक करें।
या सामान्य पाठ बॉक्स के साथ:
Private Sub Text1_Validate(Cancel As Boolean)
Cancel = Not IsNumeric(Text1.Text)
End Sub
मैं एपीआई मेरे लिए यह करते हैं। मैं इस फ़ंक्शन को .bas मॉड्यूल में जोड़ता हूं और इसे किसी भी संपादन नियंत्रण के लिए कॉल करता हूं जिसे मुझे केवल संख्यात्मक पर सेट करने की आवश्यकता होती है।
Option Explicit
Private Const ES_NUMBER = &H2000&
Private Const GWL_STYLE = (-16)
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
'set an editbox to numeric only - return the previous
'style on success or zero on error
Public Function ForceNumeric(ByVal EditControlhWnd As Long) As Long
Dim lngCurStyle As Long
Dim lngReturn As Long
lngCurStyle = GetWindowLong(EditControlhWnd, GWL_STYLE)
If lngCurStyle <> 0 Then
lngReturn = SetWindowLong(EditControlhWnd, GWL_STYLE, lngCurStyle Or ES_NUMBER)
End If
ForceNumeric = lngReturn
End Function
इसका उपयोग करने के लिए टेक्स्टबॉक्स के हैंडल के साथ फ़ंक्शन को कॉल करें।
Private Sub Form_Load()
Dim lngResult As Long
lngResult = ForceNumeric(Text1.hwnd)
End Sub
हालांकि इसके मुद्दों में यह समस्या है। आप किसी भी गैर-संख्यात्मक पाठ की प्रतिलिपि बना सकते हैं और इसे (1) Ctrl-V, (2) Shift-Insert, और (3) टेक्स्ट बॉक्स 'संदर्भ मेनू के माध्यम से नियंत्रण में पेस्ट कर सकते हैं। केवल (1) कुंजीपटल के माध्यम से वीबी 6 में संबोधित किया जा सकता है। – Herb
@ हर्ब, आप सही हैं, लेकिन वीबी में टेक्स्टबॉक्स में अमान्य मानों को चिपकाने से रोकने का एकमात्र तरीका सिस्टम संदेशों को कैप्चर करना है। यह संभव है, लेकिन वीबी 6 में एक बदसूरत चीज है। यह केवल एक गैर-संख्यात्मक मान में टाइपिंग को रोकता है। अगर मुझे अपनी डेटा अखंडता बीमा करने की ज़रूरत है तो मैं प्रसंस्करण के लिए इसका उपयोग करने से पहले पाठ को वैध मानता हूं। इस बीच मैंने उपयोगकर्ता को अमान्य डेटा दर्ज करने के लिए और अधिक कठिन बना दिया है। .NET में मैं इसे WM_PASTE (मुझे लगता है) के लिए संदेश स्ट्रीम की निगरानी के साथ संयोजित करता है और इसे अनुमति देने से पहले जानकारी को चिपकाया जा सकता है। – jac
मैं आम तौर पर इस कोड का उपयोग करें:
Private Sub text1_KeyPress(KeyAscii As Integer)
If Not IsNumeric(text1.Text & Chr(KeyAscii)) And Not KeyAscii = 8 Then KeyAscii = 0
End Sub
निम्नलिखित पूर्णांकों के लिए इस्तेमाल किया जा सकता है:
Private Sub text1_KeyPress(KeyAscii As Integer)
If Not IsNumeric(text1.Text & Chr(KeyAscii)) And Not KeyAscii = 8 Then KeyAscii = 0
if (KeyAscii>=43) and (KeyAscii<=46) Then KeyAscii = 0
'it ignores '-', '+', '.' and ','
End Sub
मैं आमतौर पर इस कोड का उपयोग:
Private Sub text1_KeyPress(KeyAscii As Integer)
If Not IsNumeric(Chr(KeyAscii)) And Not KeyAscii = 8 Then
KeyAscii = 0
End If
End Sub
आशा इससे मदद मिलती है।
If Len(Text2.Text) > 0 Then
If IsNumeric(Text2.Text) = False Then
Text2.SetFocus
CreateObject("WScript.Shell").SendKeys "{BACKSPACE}"
End If
End If
इस कोड का प्रयास करें:
Private Sub Text1_Change()
textval = Text1.Text
If IsNumeric(textval) Then
numval = textval
Else
Text1.Text = CStr(numval)
End If
End Sub
आप बल्कि मान्य घटना का उपयोग करें। – pinichi
यह निर्भर करता है। यदि आप सत्यापन चाहते हैं तो आपको 'मान्य' घटना का उपयोग करना चाहिए, जब उपयोगकर्ता टेक्स्टबॉक्स नियंत्रण छोड़ देता है और किसी अन्य चीज़ पर फ़ोकस सेट करने का प्रयास करता है तो केवल संख्याएं ट्रिगर होने के लिए दर्ज की जाती हैं। यदि आप उस मार्ग पर जाते हैं, तो केवल तभी त्रुटि या अधिसूचना प्रस्तुत की जाएगी। दूसरी तरफ, यदि आप 'चेंज' ईवेंट का उपयोग करते हैं, तो उपयोगकर्ता को तत्काल सूचित किया जाएगा कि उनके द्वारा टाइप किए गए गैर-संख्यात्मक मान अमान्य हैं। –