منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[سؤال] ماهو الكود البرمجي لتغيير فورمات النظام؟ - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : [سؤال] ماهو الكود البرمجي لتغيير فورمات النظام؟ (/showthread.php?tid=287)



ماهو الكود البرمجي لتغيير فورمات النظام؟ - kafi2030 - 26-09-13

السلام عليكم


سؤالي :
ماهو الكود البرمجي الدي نتمكن من خلاله من تغيير Format الجهاز الى

English (united state)


الغاية من السؤال:
حتى اضمن ظهور الارقام بالشكل العربي في برنامجي، وحتى لا اقعد ساعة اشرح للمستثمر كيفية عمل ذلك


ارجو ان يكون السؤال والغاية منه قد اتضحت


والف شكر


RE: ماهو الكود البرمجي لتغيير فورمات النظام؟ - eng.khalidvb - 26-09-13

السلام عليكم ورحمه الله وبركاته
 
هناك نوعين من الفورمات يمكن ان  تجعلهم ياخذون التنسيق الانجليزي الخاصة بالولايات المتحدة و  المملكه المتحدة
 
English >> UK
English>> USA
 
  ضع عدد  2 Buttons
 
 وعدد 1  Datetimepicker     لاظهار تغير التنسيق 
 
وضع هذا الكود

كود :
Imports System.Runtime.InteropServices
Public Class Form1
Private USASettings As New List(Of RegionalSettings)
Private UKSettings As New List(Of RegionalSettings)


Private Class RegionalSettings
        Public entry As String
        Public value As String
        Public Sub New(ByVal key As String, ByVal value As String)
            Me.entry = key : Me.value = value
        End Sub
    End Class

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        With USASettings
            .Add(New RegionalSettings("iCountry", "1"))
            .Add(New RegionalSettings("iCurrDigits", "2"))
            .Add(New RegionalSettings("iCurrency", "0"))
            .Add(New RegionalSettings("iDate", "1"))
            .Add(New RegionalSettings("iDigits", "2"))
            .Add(New RegionalSettings("iLZero", "1"))
            .Add(New RegionalSettings("iMeasure", "1"))
            .Add(New RegionalSettings("iNegCurr", "0"))
            .Add(New RegionalSettings("iTime", "0"))
            .Add(New RegionalSettings("iTLZero", "0"))
            .Add(New RegionalSettings("Locale", "00000409"))
            .Add(New RegionalSettings("s1159", "AM"))
            .Add(New RegionalSettings("s2359", "PM"))
            .Add(New RegionalSettings("sCountry", "United States"))
            .Add(New RegionalSettings("sCurrency", "$"))
            .Add(New RegionalSettings("sDate", "/"))
            .Add(New RegionalSettings("sDecimal", "."))
            .Add(New RegionalSettings("sLanguage", "ENU"))
            .Add(New RegionalSettings("sList", ","))
            .Add(New RegionalSettings("sLongDate", "dddd, MMMM dd, yyyy"))
            .Add(New RegionalSettings("sShortDate", "M/d/yyyy"))
            .Add(New RegionalSettings("sThousand", ","))
            .Add(New RegionalSettings("sTime", ":"))
            .Add(New RegionalSettings("sTimeFormat", "h:mms"))
            .Add(New RegionalSettings("iTimePrefix", "0"))
            .Add(New RegionalSettings("sMonDecimalSep", "."))
            .Add(New RegionalSettings("sMonThousandSep", ","))
            .Add(New RegionalSettings("iNegNumber", "1"))
            .Add(New RegionalSettings("sNativeDigits", "0123456789"))
            .Add(New RegionalSettings("NumShape", "1"))
            .Add(New RegionalSettings("iCalendarType", "1"))
            .Add(New RegionalSettings("iFirstDayOfWeek", "6"))
            .Add(New RegionalSettings("iFirstWeekOfYear", "0"))
            .Add(New RegionalSettings("sGrouping", "3;0"))
            .Add(New RegionalSettings("sMonGrouping", "3;0"))
            .Add(New RegionalSettings("sPositiveSign", ""))
            .Add(New RegionalSettings("sNegativeSign", "-"))
        End With

With UKSettings
            .Add(New RegionalSettings("iCountry", "44"))
            .Add(New RegionalSettings("iCurrDigits", "2"))
            .Add(New RegionalSettings("iCurrency", "0"))
            .Add(New RegionalSettings("iDate", "1"))
            .Add(New RegionalSettings("iDigits", "2"))
            .Add(New RegionalSettings("iLZero", "1"))
            .Add(New RegionalSettings("iMeasure", "0"))
            .Add(New RegionalSettings("iNegCurr", "1"))
            .Add(New RegionalSettings("iTime", "1"))
            .Add(New RegionalSettings("iTLZero", "1"))
            .Add(New RegionalSettings("Locale", "00000809"))
            .Add(New RegionalSettings("s1159", "AM"))
            .Add(New RegionalSettings("s2359", "PM"))
            .Add(New RegionalSettings("sCountry", "United Kingdom"))
            .Add(New RegionalSettings("sCurrency", "£"))
            .Add(New RegionalSettings("sDate", "/"))
            .Add(New RegionalSettings("sDecimal", "."))
            .Add(New RegionalSettings("sLanguage", "ENG"))
            .Add(New RegionalSettings("sList", ","))
            .Add(New RegionalSettings("sLongDate", "dd MMMM yyyy"))
            .Add(New RegionalSettings("sShortDate", "dd/MM/yyyy"))
            .Add(New RegionalSettings("sThousand", ","))
            .Add(New RegionalSettings("sTime", ":"))
            .Add(New RegionalSettings("sTimeFormat", "HH:mms"))
            .Add(New RegionalSettings("iTimePrefix", "0"))
            .Add(New RegionalSettings("sMonDecimalSep", "."))
            .Add(New RegionalSettings("sMonThousandSep", ","))
            .Add(New RegionalSettings("iNegNumber", "1"))
            .Add(New RegionalSettings("sNativeDigits", "0123456789"))
            .Add(New RegionalSettings("NumShape", "1"))
            .Add(New RegionalSettings("iCalendarType", "1"))
            .Add(New RegionalSettings("iFirstDayOfWeek", "0"))
            .Add(New RegionalSettings("iFirstWeekOfYear", "0"))
            .Add(New RegionalSettings("sGrouping", "3;0"))
            .Add(New RegionalSettings("sMonGrouping", "3;0"))
            .Add(New RegionalSettings("sPositiveSign", ""))
            .Add(New RegionalSettings("sNegativeSign", "-"))
        End With
 End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        For Each reg As RegionalSettings In UKSettings
            Microsoft.Win32.Registry.SetValue("HKEY_CURRENT_USER\Control Panel\International", reg.entry, reg.value)
        Next

NotifyInternationalChanges()
    End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        For Each reg As RegionalSettings In USASettings
            Microsoft.Win32.Registry.SetValue("HKEY_CURRENT_USER\Control Panel\International", reg.entry, reg.value)
        Next

NotifyInternationalChanges()
    End Sub

Private Sub NotifyInternationalChanges()
        
        Dim HWND_BROADCAST As New IntPtr(&HFFFF) 'broadcast to entire system
        Dim Lparam As IntPtr = System.Runtime.InteropServices.Marshal.StringToBSTR("intl")
        SendNotifyMessage(HWND_BROADCAST, &H1A, UIntPtr.Zero, Lparam)
        System.Runtime.InteropServices.Marshal.FreeBSTR(Lparam)
    End Sub

<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
    Public Shared Function SendNotifyMessage(ByVal hWnd As IntPtr, _
                                             ByVal msg As UInt32, _
                                             ByVal wParam As UIntPtr, _
                                             ByVal lParam As IntPtr) As Boolean
    End Function
End Class



RE: ماهو الكود البرمجي لتغيير فورمات النظام؟ - kafi2030 - 26-09-13

شكرا اخي
خالد على اجابتك


تم تطبيق الكود الذي تفضلت به على مثال بسيط، من اجل اختبار هل سوف تظهر الارقام عند كتابتها بالحقول بالشكل العربي (مع وضع فورمات الجهاز على دولة عربية)


ولكن للاسف
الكود لم ينجح في تغيير الفورمات، وبقيت الارقام تظهر بشكلها الهندي ( الفورمات موضوعة على دولة عربية)


ارجو اعادة النظر بالكود


والف شكر


RE: ماهو الكود البرمجي لتغيير فورمات النظام؟ - eng.khalidvb - 27-09-13

اخي انت  لم تكتب الكود كامل انا وضعت لك زرين احدهم لتحويل التنسيق الى اللغة الانجليزيه  البريطانيه والاخرى للامريكيه .. لهذا السبب لم يعمل .. سوف اعدل لك المثال  الذي ارفقته

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

تفضل اخي تابع الشرح بالفيديو ولاحظ طريقة تغيير التنسيق وتغير الارقام من الهندية الى العربيه

[youtube]7KTTAAEjCmA[/youtube]


والمثال تم التعديل عليه تجده في المرفقات Smile


RE: ماهو الكود البرمجي لتغيير فورمات النظام؟ - kafi2030 - 27-09-13

الف شكر
اخي خالد
على الجهد المتميز في اعداد الاجابة


اخي خالد
طالما ان فورمات
الولايات المتحدة او المملكة المتحدة
واحدة تكفي بالغرض

وطالما انني اريد انه بمجرد تشغيل البرنامج، ان تأخذ الارقام شكلها العربي، دون ان اجعل المستثمر يدخل في متاهات الاختيار.

قمت باجراء عدة تعديلات على النحو التالي :
1- تم وضع الاكواد التي تفضلت عليها حضرتك في وحدة نمطية.
2- قمت باختصار الكود الى دولة واحدة ( الولايات المتحدة).
3- طالما اننا ببرامجنا العربية نحتاج بشدة الى ان يكون تنسيق التاريخ هو
dd/mm/yyyy
فقد قمت بتعديل بسيط بالاكواد بحيث جعلت

كود :
 ' .Add(New RegionalSettings("sShortDate", "M/d/yyyy"))

            .Add(New RegionalSettings("sShortDate", "dd/MM/yyyy"))

انني ارغب بجعل ادخال التاريخ مماثل لما هو مطروح بالصورة، من حيث اعطاء السهولة والمرونة والسلاسة في ادخال قيمة التاريخ من لوحة المفاتيح بحقل Textbox

ارجو تعديل المثال المرفق والتصويب

والف الف شكر مجددا على جهدك الرائع
بارك الله فيك



RE: ماهو الكود البرمجي لتغيير فورمات النظام؟ - eng.khalidvb - 27-09-13

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





تفضل اخي



















والمثال تم التعديل عليه في المرفقات



RE: ماهو الكود البرمجي لتغيير فورمات النظام؟ - kafi2030 - 28-09-13

الف شكر
اخي خالد
على ماتفضلت به من جهد مميز
في هذه المشاركة
بارك الله فيك


RE: ماهو الكود البرمجي لتغيير فورمات النظام؟ - myalsailamy - 04-02-16

السلام عليكم  ،،،  


اعجبتني الطريقة المستخدمه  و قد قمت بتعديل المثال ليتم التبديل بين الهجري (أم القرى)  ،،  و الأمريكي (الميلادي)

المثال بالمرفقات ،،  و شكرا للأخ khalaroy للاشاره الى رابط الموضوع هذا لانه افادني كثيراً ، و شكر خاص للاخ eng.khalidvb لانه شارك الكود



[attachment=9309]