منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : قبول حروف عربية فقط (مع إضافة خيارات)
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم...

الدالة التالية تسمح لنا بقبول الحروف العربية فقط في مربع النص، بالإضافة إلى الخيارات (البارامترات الاختيارية) المبينة أدناه.

إذا كنا سنستعمل الدالة في أكثر من نافذة فإنه يجب وضعها في Module و تغيير تصريحها من Private إلى Public. هذه الدالة يتم استدعاؤها من داخل الإجراء KeyPress لمربع النص كما هو مبين فيما بعد:

كود :
Private Function IsArabicLetter(ByVal KeyAscii As Integer, _
                                Optional ByVal IncludeSpace As Boolean = True, _
                                Optional ByVal IncludeDigits As Boolean = False, _
                                Optional ByVal ExceptChars As String = "") As Boolean
    Const ARABIC_LETTERES As String = "اىءأإآئؤبتثجحخدذرزسشصضطظعغفقكلمنهوية"
    Dim SearchStr As String
    
    Select Case KeyAscii
        Case Is < 32
            IsArabicLetter = True
        Case 32
            IsArabicLetter = IncludeSpace
        Case 48 To 57
            IsArabicLetter = IncludeDigits
        Case Else
            SearchStr = ARABIC_LETTERES & Trim$(ExceptChars)
            IsArabicLetter = (InStr(SearchStr, Chr$(KeyAscii)) <> 0)
    End Select
End Function

* البارامتر KeyAscii هو قيمة المفتاح المضغوط (نفس البارامتر KeyAscii في الحدث KeyPress).
* البارامتر IncludeSpace اختياري و يحدد ما إذا سيتم قبول الفراغ أم لا. القيمة الافتراضية True و تعني أن الفراغ مقبول.
* البارامتر IncludeDigits اختياري و يحدد ما إذا سيتم قبول الأرقام (0 - 9) أم لا. القيمة الافتراضية False و تعني أن الأرقام غير مقبولة.
* البارامتر ExceptChars اختياري (نوعه String) و يحدد أية رموز (characters) أخرى مسموح بها (مقبولة). القيمة الافتراضية هي نص فارغ "" أي ليس هناك رموز أخرى مسموح بها.

= و يتم استدعاء الدالة كالتالي في إجراء الحدث KeyPress لمربع النص:

كود :
Private Sub Text1_KeyPress(KeyAscii As Integer)
    If Not IsArabicLetter(KeyAscii) Then KeyAscii = 0    ' قبول الحروف العربية و الفراغ
End Sub

= أمثلة أخرى:

كود :
If Not IsArabicLetter(KeyAscii, , True) Then KeyAscii = 0    ' قبول الحروف العربية و الفراغ و الأرقام
If Not IsArabicLetter(KeyAscii, False, True) Then KeyAscii = 0    ' قبول الحروف العربية و الأرقام دون الفراغ
If Not IsArabicLetter(KeyAscii, , , ".؟") Then KeyAscii = 0    ' قبول الحروف العربية و الفراغ بالإضافة إلى النقطة و علامة الاستفهام العربية

نرجو الاستفادة و السلام.
السلام عليكم


بارك الله فيك على جهدك المتواصل

يعطيك العافية
دائما طرحك جميل ومميز
تحياتي لكم ولكل الاخوة المشاركين في المنتدى الرائع وتسلم ايديكم والله يحفظكم مع التقدير العالي لكم والاحترام
كيف أسوي التصريح من Private إلي Public ??
(29-03-17, 08:15 PM)ahmed elkazaz كتب : [ -> ]كيف أسوي التصريح من Private إلي Public ??

السلام عليكم

عدل الكلمة الاولى في الكود من Private  الى  Public

ويكفي ان تضعها مرة واحدة في الموديل   وتستخدمها في اي فورم في المشروع

كالتالي 

PHP كود :
Public Function IsArabicLetter(ByVal KeyAscii As Integer_
                                Optional ByVal IncludeSpace 
As Boolean True_
                                Optional ByVal IncludeDigits 
As Boolean False_
                                Optional ByVal ExceptChars 
As String "") As Boolean
    Const ARABIC_LETTERES 
As String "اىءأإآئؤبتثجحخدذرزسشصضطظعغفقكلمنهوية"
 
   Dim SearchStr As String
    
    Select 
Case KeyAscii
        Case Is 
32
            IsArabicLetter 
True
        Case 32
            IsArabicLetter 
IncludeSpace
        Case 48 To 57
            IsArabicLetter 
IncludeDigits
        Case 
Else
 
           SearchStr ARABIC_LETTERES Trim$(ExceptChars)
 
           IsArabicLetter = (InStr(SearchStrChr$(KeyAscii)) <> 0)
 
   End Select
End 
Function 

والله الموفق
مثال رائع جدا جزاك الله خيرا كثيرا