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

نسخة كاملة : ماهو الكود البرمجي لتغيير فورمات النظام؟
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم


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

English (united state)


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


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


والف شكر
السلام عليكم ورحمه الله وبركاته
 
هناك نوعين من الفورمات يمكن ان  تجعلهم ياخذون التنسيق الانجليزي الخاصة بالولايات المتحدة و  المملكه المتحدة
 
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
شكرا اخي
خالد على اجابتك


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


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


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


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

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

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

[youtube]7KTTAAEjCmA[/youtube]


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


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

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

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

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

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

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

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

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





تفضل اخي



















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


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

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



[attachment=9309]