تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] أختصار هذا الكود
#2
السلام عليكم...

للأسف 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.

نرجو الاستفادة و السلام.
بِسْمِ اللهِ الرَّحْمَنِ الرَّحِيمِ ( وَ مَا تُقَدِّمُوا لِأَنفُسِكُم مِّنْ خَيْرٍ تَجِدُوهُ عِندَ اللهِ هُوَ خَيْراً وَ أَعْظَمَ أَجْراً ) صَدَقَ اللهُ الْعَظِيمُ
الرد }}}


الردود في هذا الموضوع
أختصار هذا الكود - بواسطة baderb14 - 25-10-13, 08:16 PM
RE: أختصار هذا الكود - بواسطة ناجي إبراهيم - 25-10-13, 09:43 PM
RE: أختصار هذا الكود - بواسطة baderb14 - 26-10-13, 07:14 AM
RE: أختصار هذا الكود - بواسطة mamas1 - 26-10-13, 02:11 AM
RE: أختصار هذا الكود - بواسطة mamas1 - 26-10-13, 04:06 PM
RE: أختصار هذا الكود - بواسطة baderb14 - 26-10-13, 05:13 PM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  اختصار الكود حسب المثال المرفق abde6726 2 530 29-10-23, 11:00 AM
آخر رد: abde6726
  اختصار الكود حسب المثال المرفق abde6726 0 421 28-10-23, 05:01 PM
آخر رد: abde6726
Question [vb6.0] عندي مشكلة في هذا الكود حيث انه لا يقبل الا رقم فقط اريد ان يقبل الارقام والاحرف ؟ Microformt 0 513 23-10-23, 08:06 PM
آخر رد: Microformt
Question كيف يمكن تطوير هذا الكود نامل المساعدة ؟؟ Microformt 1 1,146 22-11-21, 07:51 PM
آخر رد: اسلام الكبابى
Question [vb6.0] هل يمكن تغير نوع خط Label من خلال الكود وكيف ذلك ؟؟ Microformt 1 1,338 10-10-21, 08:58 AM
آخر رد: Microformt
  [سؤال] مساعدة في عمل هذا الكود العبادي 2 11 3,541 09-09-21, 01:29 AM
آخر رد: اسلام الكبابى
Question [vb6.0] نامل المساعدة في هذا الكود المرفق إن امكن ذلك ؟؟ Microformt 3 1,544 23-05-21, 08:50 AM
آخر رد: Ahmed_Mansoor
  [سؤال] كيفيه البحث باستخدام الكود aboezzat84 1 1,468 28-12-20, 05:59 PM
آخر رد: sendbad100
  سوال اخوانى الاحباب ارجو المساعدة فى هذا الكود كي بورد ارقام mhareek 0 1,241 22-09-20, 09:04 PM
آخر رد: mhareek
Lightbulb [كود] كود لتأجيل تنفيذ الكود بدون Timer! Omar 6.0 1 2,320 19-08-20, 09:39 PM
آخر رد: Gfftfdeuoig c

التنقل السريع :


يقوم بقرائة الموضوع: