سلام عليكم
انا اريد منع الكتابة في التكست غير الاعداد وتم استخدام هذا الكود
PHP كود :
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii < Asc("0") Or KeyAscii > Asc("9") Then
KeyAscii = 0
End If
End Sub
ولكن ليس من المعقول تكرارة في كل تكست ...
اريد كتابة الكود مرة واحد مع استخدام الفاصلة في الكود ووضع اسم التكست الثاني
السلام عليكم...
للأسف VB6 لا تدعم مشاركة نفس الإجراء لأكثر من كائن واحد. لكن يمكن تجاوز ذلك باستعمال الـ Class Modules كالتالي:
1. أضف إلى المشروع Class Module و قم بتسميتها باسم CNumberOnlyTextBox (من خلال الخاصية Name).
2. ضع بها الكود التالي:
كود :
Option Explicit
Private WithEvents m_TextBox As TextBox
Public Sub AttachTextBox(ATextBox As TextBox)
Set m_TextBox = ATextBox
End Sub
Private Sub m_TextBox_KeyPress(KeyAscii As Integer)
If KeyAscii > 31 Then
If Chr$(KeyAscii) = "." Then
If InStr(m_TextBox.Text, ".") <> 0 Then
If m_TextBox.SelLength > 0 Then
If InStr(m_TextBox.SelText, ".") = 0 Then
KeyAscii = 0
End If
Else
KeyAscii = 0
End If
End If
ElseIf InStr("0123456789", Chr$(KeyAscii)) = 0 Then
KeyAscii = 0
End If
End If
End Sub
3. أضف إلى المشروع Class Module أخرى و قم بتسميتها باسم CNumberOnlyTextBoxes (من خلال الخاصية Name).
4. ضع بها الكود التالي:
كود :
Option Explicit
Private TextBoxCollection As Collection
Private Sub Class_Initialize()
Set TextBoxCollection = New Collection
End Sub
Private Sub Class_Terminate()
Dim Idx As Long
For Idx = TextBoxCollection.Count To 1 Step -1
TextBoxCollection.Remove Idx
Next Idx
Set TextBoxCollection = Nothing
End Sub
Public Sub Add(ATextBox As TextBox)
Dim ANewTextBox As New CNumberOnlyTextBox
ANewTextBox.AttachTextBox ATextBox
TextBoxCollection.Add ANewTextBox
End Sub
* تقول لماذا كل ذلك؟ - تذكر أنك تكتب الأكواد السابقة مرة واحدة فقط.
* الآن لأي Form بها مربعات نص تريدها أن تقبل أرقاماً فقط (بالإضافة إلى الفاصلة العشرية) نقوم بالتالي:
أ. في قسم التصريحات العام:
كود :
Private NumTextBoxes As New CNumberOnlyTextBoxes
ب. و في إجراء الحدث Load للـ Form نضيف مربعات النص المطلوبة:
كود :
Private Sub Form_Load()
NumTextBoxes.Add Text1
NumTextBoxes.Add Text3
End Sub
و إذا أردت أن تضيف مربعات نص أخرى (كي تقبل أرقاماً) فيكفي أن تضيف لكل منها سطراً واحداً في الحدث Form_Load.
نرجو الاستفادة و السلام.
انتظر حتى غد
سأريك طريقة جميلة لتفادي هذا المشكل
(25-10-13, 09:43 PM)ناجي إبراهيم كتب : [ -> ]* الآن لأي Form بها مربعات نص تريدها أن تقبل أرقاماً فقط (بالإضافة إلى الفاصلة العشرية) نقوم بالتالي:
أ. في قسم التصريحات العام:
كود :
Private NumTextBoxes As New CNumberOnlyTextBoxes
ب. و في إجراء الحدث Load للـ Form نضيف مربعات النص المطلوبة:
كود :
Private Sub Form_Load()
NumTextBoxes.Add Text1
NumTextBoxes.Add Text3
End Sub
و إذا أردت أن تضيف مربعات نص أخرى (كي تقبل أرقاماً) فيكفي أن تضيف لكل منها سطراً واحداً في الحدث Form_Load.
نرجو الاستفادة و السلام.
شكرا لك اخي ناجي وبارك الله فيك
جزاك الله الف خير
لم اعرف اطبق هذه أتمنى التوضيح اكثر
اخ تركي الحلواني
تم التطبيق وبالفعل نجحت ولقد نالت على اعجابي لسهولتها وسرعه تطبيقها
جزاك الله الف خير
وبارك الله فيك
(26-10-13, 02:11 AM)mamas1 كتب : [ -> ]انتظر حتى غد
سأريك طريقة جميلة لتفادي هذا المشكل
بانتظارك اخي
بارك الله فيك
الفكرة هي صنع برنامج يكتب الأكواد بطريقة سريعة و مهما كان العدد
أنظر هذا المشروع بصفة عامة و يمكنك تخصيصه
(26-10-13, 04:06 PM)mamas1 كتب : [ -> ]الفكرة هي صنع برنامج يكتب الأكواد بطريقة سريعة و مهما كان العدد
أنظر هذا المشروع بصفة عامة و يمكنك تخصيصه
تمت التجربة وهو جميل ويسهل عملية البرمجة
ماقصرتم وبيض الله وجيهكم