الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

طلب فصل الحروف فقط اثناء كتابتها بالتكست بمسافه

مغلقمُجاب
بدأه m22sf في 21 يناير 2013 · 15 رد · 2,202 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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


اولاً: ابارك للجميع عودة المنتدى بحلته الجديده وكم انا سعيد بعودته واسئل الله العظيم ان يعم بنفعه الجميع


 


ثانياً: اتمنا ايجاد كود عند كتابة الاحرف فقط داخل التكست بوكس ان يتم فصلها بمسافه وذالك اثناء الكتابه, اما الارقام فلام يتم فصلها بمسافه نهائي 


وعند كتابة حرف (الهاء) ان تتم كتابته بهذه الطريقه مباشره (هـ) بدلاً من (ه)


 


اليكم مثال توضيحي للمطلوب


عندك كتابة الاحرف مباشره وبدون استخدام المسافه سوف تظهر بهذا المظهر ( ابه1234 )


والمظهر المطلوب اثناء كتابتها ان يكون هكذا ( ا ب هـ 1234 )


يكون استخدام المسافه تلقائي


 


هذا والله يحفظكم ويرعاكم 


#2

تفضل اخي .. أتمنى ان يكون الكود هو المطلوب

 

الطريقة :

استورد مجال الأسماء هذا

 

Imports System.Text.RegularExpressions

ضع هذا الكود في حدث KeyPress الخاص بالــ Textbox

 

 

Dim T As MatchCollection        T = 
Regex.Matches(e.KeyChar, "[ء-ي]")        
If T.Count <> 0 
Then            
TextBox1.Text = Regex.Replace(TextBox1.Text, "([ء-ي])", "$1 
")            
TextBox1.SelectionStart = 
TextBox1.TextLength        End If

 

ملاحظة : لااعرف طريقة ادارج الكود بالمحرر ... لكن وضعت الكود البرمجي بمستند نصي بالمرفقاتفصل الحروف.txt

تم تعديل هذه المشاركة بواسطة مالكـ في 21 يناير 2013 في 04:10

اذا المشاركة قد نالت على أعجابك .... فارجوا التقييم  rep_up.png

#3

شكراً اخي مالك على سرعة الرد والتجاوب


ولكن الكود الذي قمة بكتابته يقوم بتكرار المسافه في كل مره تكتب حرف عند كتابة اكثر من حرف تجد ان المسافه التي حدثة بين الاحرف متكرر وكذالك عند كتابة الارقام لا يفصل بينها وبين الاحرف بل تجد ان الرقم ملاصق للحرف والمفترض ان يفصل بين الرقم والحرف ولكن لايفصل الارقام عن بعض وكذالك حرف الهاء لم يحدث فيه تغيير المفترض ان يكون بهذه الطريقه عند كتابته هـ ,وتم ارفاق الفورم لتعديل عليه وكذالك صوره للفورم لتوضيح المطلوب وشكراً


WindowsApplication8.rar

post-272689-0-40922300-1358777994_thumb.

تم تعديل هذه المشاركة بواسطة m22sf في 21 يناير 2013 في 17:21

#4

الرجاء المساعده انا محتاج الكود ضروري وجزاكم الله خير

#5
m22sf كتب:

الرجاء المساعده انا محتاج الكود ضروري وجزاكم الله خير

مازلت بنتظار المساعده

#6 أفضل إجابة

تعديل بسيط علي اخي مالك

 Dim T As MatchCollection = Regex.Matches(e.KeyChar, "[ء-ي]")
        If T.Count <> 0 Then
            e.Handled = True
            TextBox1.Text = TextBox1.Text & Regex.Replace(e.KeyChar, "([ء-ي])", "$1 ")
            TextBox1.SelectionStart = TextBox1.TextLength
        End If

مرفق

Form1.txt

تم تعديل هذه المشاركة بواسطة KARIMSOFT في 28 يناير 2013 في 01:26

1
#7

ما شاء الله كود KARIMSOFT يعمل جيداً ويفصل بين الحروف العربية ولا يفصل بين الأرقام

 

تمت ملاحظة مشكلة صغيرة مثلا اذا كتبت الجملة التالية في الـ Textbox :  أ ب ج 13245 وأردت استبدال حرف الباء بحرف الدال مثلا وعند الضغط علي حرف الدال ينتقل المؤشر إلي نهاية الجملة ويكتب حرف الدال ويتبقي حرف الباء في مكانه .

 

الكود التالي هو كود الأخ KARIMSOFT مع إضافة التعديلات المطلوبة وخصوصا إضافة المد لحرف الهاء :

 

 Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
        If TextBox1.SelectionLength > 0 Then
            TextBox1.Text = TextBox1.Text.Replace(TextBox1.SelectedText, e.KeyChar) ' استبدال الحرف المحدد بالحرف الجديد
            e.Handled = True ' إذا لم نضع هذه سيكتب الحرف مرتين
        Else
            Dim T As MatchCollection = Regex.Matches(e.KeyChar, "[ء-ي]")
            If T.Count <> 0 Then
                e.Handled = True
                Dim NewRplc As String = ""
                If Asc(e.KeyChar) = 229 Then '  إذا كان الآكسي للحرف المضغوط هو حرف الهاء يضاف له حرف المد
                    NewRplc = "$1ـ "
                Else
                    NewRplc = "$1 " ' وإلا يترك كما هو
                End If
                TextBox1.Text = TextBox1.Text & Regex.Replace(e.KeyChar, "([ء-ي])", NewRplc)
                TextBox1.SelectionStart = TextBox1.TextLength
            End If
        End If
    End Sub

 

 

والله أعلم

 

 

****

***

**

*

تم تعديل هذه المشاركة بواسطة kslawy في 28 يناير 2013 في 11:25

#8

اشكرا اخيkslawy اكرمك الله

ما اعجبني في الرد فكرة نبدء من حيث انتها الاخرون شكرا

لم اجرب الكود ولكن شكله اكثر دقه اكرمك الله

تم تعديل هذه المشاركة بواسطة KARIMSOFT في 29 يناير 2013 في 12:49

#9

جزاكم الله خير اخواني على المساعده والكود شبه اكتمل وعليه ملاحظات بسيطه جداً كتالي

عند تضليل الحرف لاستبداله واستخدام زر المسح لمسح الحرف يتم وضع علامه او نقطه دائريه الشكل او اذا تم تضليل ما بداخل التكست بالكامل ومحاولة مسح تظهر المشكلة نفسها ولكن عند استخدام زر delete لاتظر المشكله ولكن عند تضليل التكست بالكامل والكتابه مره اخرى اثناء التضليل لا يضع مسافه بعد اول حرف وشكراً

#10

قد يفيد هذا الكود

    Private Sub TextBox1_KeyUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp
        TextBox1.Text = Regex.Replace(DirectCast(sender, System.Windows.Forms.TextBox).Text.Replace(" ", "").Replace("ـ", ""), "([ء-ي])", "$1 ").Replace("ه", "هـ")
        TextBox1.SelectionStart = TextBox1.TextLength
    End Sub

تم تعديل هذه المشاركة بواسطة KARIMSOFT في 29 يناير 2013 في 17:58

#11

ما شاء الله هذا الكود اختصر الكود السابق في سطر واحد

#12

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

أسهل طريقة لفصل الحروف هي إستخدام الدالة ToCharArray

وهذا مثال لإستخدام الدلة

        Dim df As Array
        Dim s As String = "Hello"
        s.ToCharArray()
        For i As Integer = 0 To s.Length - 1
            MsgBox(s(i))
        Next

لكن المشكلة في هذا الكود والكود الخاص بكم :D هو أنه لا يتعامل بشكل جيد مع الحروف المُشكلة ، هل من أفكار للفصل بين الحروف إذا كان أحد أو كل الحروف مشكلة

شكرا

تم تعديل هذه المشاركة بواسطة ismail2012 في 5 فبراير 2013 في 16:24

#13

ضع كل رموز التشكيل داخل القوس هذا [ء-ي]

#14

ليس لدي خبرة كافية ب RegularExpressions أرجو مثال

#15

جرب هذا مع الشدة والسكون

[ء-ي ّ ]ْْْْ

#16
KARIMSOFT كتب:

جرب هذا مع الشدة والسكون

[ء-ي ّ ]ْْْْ

للأسف لا يعمل

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…