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

انا اريد منع الكتابة في التكست غير الاعداد وتم استخدام هذا الكود

PHP كود :
Private Sub Text1_KeyPress(KeyAscii As Integer)
If 
KeyAscii Asc("0") Or KeyAscii Asc("9"Then
     KeyAscii 
0
     End 
If
End Sub 
ولكن ليس من المعقول تكرارة في كل تكست ...

اريد كتابة الكود مرة واحد مع استخدام الفاصلة في الكود ووضع اسم التكست الثاني
الرد }}}
تم الشكر بواسطة:
#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.

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

PHP كود :
Public Function gWriteOnleNumber(IntKeyAscii As Integer)
If (
IntKeyAscii 48 Or IntKeyAscii 57Then
    gWriteOnleNumber 
0
Else
    
gWriteOnleNumber IntKeyAscii
End 
If
If 
IntKeyAscii 8 Then gWriteOnleNumber IntKeyAscii
If IntKeyAscii 13 Then gWriteOnleNumber IntKeyAscii
If IntKeyAscii 46 Then gWriteOnleNumber IntKeyAscii

End 
Function 
وضع هذا في حدث الـ KeyPress في كل تكست

PHP كود :
KeyAscii gWriteOnleNumber(KeyAscii
[صورة مرفقة: images?q=tbn:ANd9GcT72OLJW7D1E5QW-HUeWeJ...TGoNeg2jnQ]
الرد }}}
تم الشكر بواسطة: ناجي إبراهيم , @@أبورائد@@ , baderb14
#4
انتظر حتى غد
سأريك طريقة جميلة لتفادي هذا المشكل
منقطع .. للدراسة Confused
الرد }}}
تم الشكر بواسطة: @@أبورائد@@ , baderb14
#5
(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 كتب : انتظر حتى غد
سأريك طريقة جميلة لتفادي هذا المشكل

بانتظارك اخي
بارك الله فيك
الرد }}}
تم الشكر بواسطة:
#6
الفكرة هي صنع برنامج يكتب الأكواد بطريقة سريعة و مهما كان العدد
أنظر هذا المشروع بصفة عامة و يمكنك تخصيصه


الملفات المرفقة
.rar   Help For all VB6 codes.rar (الحجم : 1.82 ك ب / التحميلات : 136)
منقطع .. للدراسة Confused
الرد }}}
تم الشكر بواسطة: baderb14
#7
(26-10-13, 04:06 PM)mamas1 كتب : الفكرة هي صنع برنامج يكتب الأكواد بطريقة سريعة و مهما كان العدد
أنظر هذا المشروع بصفة عامة و يمكنك تخصيصه

تمت التجربة وهو جميل ويسهل عملية البرمجة

ماقصرتم وبيض الله وجيهكم
الرد }}}
تم الشكر بواسطة: mamas1


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  اختصار الكود حسب المثال المرفق abde6726 2 282 29-10-23, 11:00 AM
آخر رد: abde6726
  اختصار الكود حسب المثال المرفق abde6726 0 220 28-10-23, 05:01 PM
آخر رد: abde6726
Question [vb6.0] عندي مشكلة في هذا الكود حيث انه لا يقبل الا رقم فقط اريد ان يقبل الارقام والاحرف ؟ Microformt 1 269 25-10-23, 04:10 PM
آخر رد: Amir_Alzubidy
Question كيف يمكن تطوير هذا الكود نامل المساعدة ؟؟ Microformt 1 913 22-11-21, 07:51 PM
آخر رد: اسلام الكبابى
Question [vb6.0] هل يمكن تغير نوع خط Label من خلال الكود وكيف ذلك ؟؟ Microformt 2 1,051 10-10-21, 08:58 AM
آخر رد: Microformt
  [سؤال] مساعدة في عمل هذا الكود العبادي 2 11 2,962 09-09-21, 01:29 AM
آخر رد: اسلام الكبابى
Question [vb6.0] نامل المساعدة في هذا الكود المرفق إن امكن ذلك ؟؟ Microformt 3 1,262 23-05-21, 08:50 AM
آخر رد: Ahmed_Mansoor
  [سؤال] كيفيه البحث باستخدام الكود aboezzat84 1 1,208 28-12-20, 05:59 PM
آخر رد: sendbad100
  سوال اخوانى الاحباب ارجو المساعدة فى هذا الكود كي بورد ارقام mhareek 0 1,009 22-09-20, 09:04 PM
آخر رد: mhareek
Lightbulb [كود] كود لتأجيل تنفيذ الكود بدون Timer! Omar 6.0 1 2,097 19-08-20, 09:39 PM
آخر رد: Gfftfdeuoig c

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


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم