- tarik
- عدد المساهمات : 134
تاريخ التسجيل : 08/10/2012
كتابة الأرقام العربية ( الهندية ) دون الحاجة لتغيير إعدادات الويندوز
الإثنين أكتوبر 15, 2012 10:17 am
--------------------------------------------------------------------------------
بسم الله الرحمن الرحيم
موضوعنا هو الحاجة لكتابة الأرقام العربية دون الحاجة لجعل المستخدم يقوم بتغيير إعدادات الويندوز لتغيير شكل الأرقام .
فمثلا عند عمل برامج للأطفال مثلا فليس من المنطقى ان يقوم الطفل بتغيير إعدادات الوينوز لتغيير شكل الأرقام ( إن كان الطفل يعرف أن يقوم بهذا أصلا)
المهم : ملخص الموضوع فى الدالة ChrW
تقوم هذه الدالة بعرض الحرف الموافق لكود معين مثلا:
ملحوظة هامة جدا : عند تحويل الأرقام للعربية بهذا الشكل ( العربى / الهندى) لن يمكنك إجراء أية عمليات حسابية عليها كما سنرى فى المثال :
قد قمت بعمل دالتين :
الأولى اسمها ArText و هى تستخدم فى التحويل من الأرقام بالشكل العربى إلى الأرقام بالشكل الإنجليزى
الثانية اسمها EnText و هى تستخدم فى التحويل من الأرقام بالشكل الانجليزى إلى الأرقام بالشكل العربى
يمكنك وضع هاتين الدالتين فى موديول وقم بإستدعائهم عندما تريد كما فى المثال التالى
================================================== =============
ماذا لو أردنا أن يقوم البرنامج بتحويل الأرقام الى العربية مباشرة عندما يقوم المستخدم بالكتابة ؟
ضع الجمل التالية فى حدث KeyPress
أرجو الفائدة للجميع ، و لا تنسنونا بالدعاء
أللهم اغفر لى و لوالدى وللمؤمنين يوم يقوم الحساب
بسم الله الرحمن الرحيم
موضوعنا هو الحاجة لكتابة الأرقام العربية دون الحاجة لجعل المستخدم يقوم بتغيير إعدادات الويندوز لتغيير شكل الأرقام .
فمثلا عند عمل برامج للأطفال مثلا فليس من المنطقى ان يقوم الطفل بتغيير إعدادات الوينوز لتغيير شكل الأرقام ( إن كان الطفل يعرف أن يقوم بهذا أصلا)
المهم : ملخص الموضوع فى الدالة ChrW
تقوم هذه الدالة بعرض الحرف الموافق لكود معين مثلا:
- الكود:
ChrW(&H660)========= 0
ChrW(&H661)========= 1
ChrW(&H662)========= 2
ChrW(&H663)========= 3
ChrW(&H664)========= 4
ChrW(&H665)========= 5
ChrW(&H666)========= 6
ChrW(&H667)========= 7
ChrW(&H668)========= 8
ChrW(&H669)========= 9
- الكود:
TextBox1.Text = ChrW(&H669)
ملحوظة هامة جدا : عند تحويل الأرقام للعربية بهذا الشكل ( العربى / الهندى) لن يمكنك إجراء أية عمليات حسابية عليها كما سنرى فى المثال :
- الكود:
TextBox1.Text = ChrW(&H669)
Msgbox ( Val ( TextBox1.Text ) ) ========= 0
Msgbox ( Integer . Parse ( TextBox1.Text ) ) ========= 0
قد قمت بعمل دالتين :
الأولى اسمها ArText و هى تستخدم فى التحويل من الأرقام بالشكل العربى إلى الأرقام بالشكل الإنجليزى
- الكود:
Public Function ArText(ByVal texto As String) As String
'Dim lang As InputLanguage
Dim i As Integer
Dim LongText As String = ""
For i = 1 To texto.Length
'If lang.CurrentInputLanguage.Culture.TwoLetterISOLanguageName = "ar" Then
If Mid$(texto, i, 1) = "0" Then LongText = LongText & ChrW(&H660)
If Mid$(texto, i, 1) = "1" Then LongText = LongText & ChrW(&H661)
If Mid$(texto, i, 1) = "2" Then LongText = LongText & ChrW(&H662)
If Mid$(texto, i, 1) = "3" Then LongText = LongText & ChrW(&H663)
If Mid$(texto, i, 1) = "4" Then LongText = LongText & ChrW(&H664)
If Mid$(texto, i, 1) = "5" Then LongText = LongText & ChrW(&H665)
If Mid$(texto, i, 1) = "6" Then LongText = LongText & ChrW(&H666)
If Mid$(texto, i, 1) = "7" Then LongText = LongText & ChrW(&H667)
If Mid$(texto, i, 1) = "8" Then LongText = LongText & ChrW(&H668)
If Mid$(texto, i, 1) = "9" Then LongText = LongText & ChrW(&H669)
Next
Return LongText
'End If
End Function
الثانية اسمها EnText و هى تستخدم فى التحويل من الأرقام بالشكل الانجليزى إلى الأرقام بالشكل العربى
- الكود:
Public Function EnText(ByVal texto As String) As String
Dim i As Integer
Dim LongText As String = ""
For i = 1 To texto.Length
If Mid$(texto, i, 1) = ChrW(&H660) Then LongText = LongText & "0"
If Mid$(texto, i, 1) = ChrW(&H661) Then LongText = LongText & "1"
If Mid$(texto, i, 1) = ChrW(&H662) Then LongText = LongText & "2"
If Mid$(texto, i, 1) = ChrW(&H663) Then LongText = LongText & "3"
If Mid$(texto, i, 1) = ChrW(&H664) Then LongText = LongText & "4"
If Mid$(texto, i, 1) = ChrW(&H665) Then LongText = LongText & "5"
If Mid$(texto, i, 1) = ChrW(&H666) Then LongText = LongText & "6"
If Mid$(texto, i, 1) = ChrW(&H667) Then LongText = LongText & "7"
If Mid$(texto, i, 1) = ChrW(&H668) Then LongText = LongText & "8"
If Mid$(texto, i, 1) = ChrW(&H669) Then LongText = LongText & "9"
Next
Return LongText
End Function
يمكنك وضع هاتين الدالتين فى موديول وقم بإستدعائهم عندما تريد كما فى المثال التالى
- الكود:
Textbox1.Text=ArText("5") ========= 5
- الكود:
Textbox1.Text= ArText ( EnText ( TextBox1.Text ) * 5
================================================== =============
ماذا لو أردنا أن يقوم البرنامج بتحويل الأرقام الى العربية مباشرة عندما يقوم المستخدم بالكتابة ؟
ضع الجمل التالية فى حدث KeyPress
- الكود:
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
'Dim lang As InputLanguage
'If lang.CurrentInputLanguage.Culture.TwoLetterISOLanguageName = "ar" Then
TextBox1.TextAlign = HorizontalAlignment.Right
If e.KeyChar = "0" Then e.KeyChar = ChrW(&H660)
If e.KeyChar = "1" Then e.KeyChar = ChrW(&H661)
If e.KeyChar = "2" Then e.KeyChar = ChrW(&H662)
If e.KeyChar = "3" Then e.KeyChar = ChrW(&H663)
If e.KeyChar = "4" Then e.KeyChar = ChrW(&H664)
If e.KeyChar = "5" Then e.KeyChar = ChrW(&H665)
If e.KeyChar = "6" Then e.KeyChar = ChrW(&H666)
If e.KeyChar = "7" Then e.KeyChar = ChrW(&H667)
If e.KeyChar = "8" Then e.KeyChar = ChrW(&H668)
If e.KeyChar = "9" Then e.KeyChar = ChrW(&H669)
'End If
End Sub
أرجو الفائدة للجميع ، و لا تنسنونا بالدعاء
أللهم اغفر لى و لوالدى وللمؤمنين يوم يقوم الحساب
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى