تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] مشكلة في برنامج متعدد اللغات
#1
السلام عليكم ورحمة الله وبركاته 

اعضاء المنتدى المحترمين 


والى كل محترف برمجة ومتدرب اسعد الله اوقاتكم بكل خير 

مشكلتي كالتالي انا عامل برنامج بلغتين العربية والانجليزية بواسطة localizable قمت باختيار اللغة العربية ثم الانجليزية والوضع ماشي زي الحلاوة 

لكن عندي احدى الشاشات يوجد داخلها زر بحث يفتح الى نافذة اخرى خاصة بالبحث 

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

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

اولا : كود استدعاء شاشة دليل الحسابات هو 

كود :
             'هذا السطر عبارة عن اجراء موجود في موديول 
        System_Language(Chart_Of_Account) 'this code is general methode
        Dim New_Chart_Of_Account As New Chart_Of_Account
        New_Chart_Of_Account.ShowDialog()





ثانيا : الموديول الخاص باللغة وتغييرها


كود :
   Public Sub System_Language(ByVal Controls_Location As Object)
       If My.Settings.App_language = "AR" Then
           CurrentThread.CurrentUICulture = New CultureInfo("AR")
       Else
           If My.Settings.App_language = "EN" Then
               CurrentThread.CurrentUICulture = New CultureInfo("EN")
           End If
       End If
   End Sub




ثالثا : كود استدعاء الاجراء من شاشة البحث 

كود :
Chart_Of_Account.show_record_data(DataGridViewX1.CurrentRow.Cells(0).Value)



رابعا : كود اجراء التعبئة الموجود في شاشة دليل الحسابات

كود :
Public Sub show_record_data(ByVal x)
       Dim adp = New SqlClient.SqlDataAdapter("select * from Company_Tree where Account_Code=N'" & x & "'", sqlconn)
       Dim ds = New DataSet
       adp.Fill(ds)
       Dim dt = ds.Tables(0)

       If dt.Rows.Count > 0 Then

           Dim dr = dt.Rows(0)

           Account_Status.Checked = dr!Account_Status
           Account_Type.Checked = dr!Account_Type
           Account_Status.Checked = dr!Account_Status

           If dr!Account_Nature = True Then
               Debit.Checked = True
               Credit.Checked = False
           Else
               Debit.Checked = False
               Credit.Checked = True
           End If

           For Each Ctrl In Grp1.Controls
               If TypeOf Ctrl Is TextBox And dt.Columns.Contains(Ctrl.Name) Then
                   Ctrl.Text = dr.Item(Ctrl.Name)
               End If
           Next

           For Each Ctrl In Grp2.Controls
               If TypeOf Ctrl Is TextBox And dt.Columns.Contains(Ctrl.Name) Then
                   Ctrl.Text = dr.Item(Ctrl.Name)
               End If
           Next

           For Each Ctrl In Grp3.Controls
               If TypeOf Ctrl Is TextBox And dt.Columns.Contains(Ctrl.Name) Then
                   Ctrl.Text = dr.Item(Ctrl.Name)
               End If
               If TypeOf Ctrl Is ComboBox And dt.Columns.Contains(Ctrl.Name) Then
                   Ctrl.Text = dr.Item(Ctrl.Name)
               End If
           Next

           For Each Ctrl In Grp4.Controls
               If TypeOf Ctrl Is TextBox And dt.Columns.Contains(Ctrl.Name) Then
                   Ctrl.Text = dr.Item(Ctrl.Name)
               End If
           Next

           Date_Create_Account.Value = dr!Date_Create_Account
           Change.Text = 0
       End If
   End Sub


المشكلة هي انه عندما اضغط على الداتا جرد لا يحصل شيء المفروض ان يقوم باستدعاء كود التعبئة من فورم دليل الحسابات ويعبئ بيانات الحساب في شاشة دليل الحسابات


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


للتوضيح سوف اضع صورة للشاشات المذكورة 








الرجاء الحل منكم اخواني وجزاكم الله كل خير
الرد }}}
تم الشكر بواسطة: مصمم
#2
ارفق المشروع اخي الكريم
الرد }}}
تم الشكر بواسطة: elgokr
#3
(10-11-18, 10:25 AM)HASAN6.0 كتب : ارفق المشروع اخي الكريم

للاسف النت ضعيف لا استطيع ارفاق المشروع

انا ارفقت الاكواد المستخدمة ياريت اذا بتقدر تشوف حل الي بدون ارفاق المشروع لانه صعب ارفاقه لو بقدر كان ارفقته
الرد }}}
تم الشكر بواسطة:
#4
فش حل اخواني

انا صارلي فترة موقف الشغل بسبب هاي المشكلة ياريت حد يساعدنا فيها بعد اذنكم
الرد }}}
تم الشكر بواسطة:
#5
فش حد يساعدنا
الرد }}}
تم الشكر بواسطة:
#6
اخي الكريم ... ارفق فقط form فارغ به كود الاستدعاء و form البحث , وسيتم حل مشكلتك ان شاء الله
الرد }}}
تم الشكر بواسطة: elgokr
#7
(10-11-18, 11:25 PM)HASAN6.0 كتب : اخي الكريم ... ارفق فقط form  فارغ به كود الاستدعاء و form  البحث , وسيتم حل مشكلتك ان شاء الله



اخي الفاضل شكرا على الرد اتعبتك معي انا ارفقت كل الاكواد المستخدمة في الفورمين في الموضوع انظر اول مشاركة تجد كل الاكواد المستخدمة

بالرجاء المساعدة لاني عنجد مستعجل في البرنامج وشكرا لكم
الرد }}}
تم الشكر بواسطة: elgokr
#8
اخى الفاضل ما ارفقته من كود نظرياً لا يوجد به مشكلة
ولكن عملياً دون اختباره ومراجعة الامر فهنا تقع المشكلة

بان لا يمكن لاحد اختبار الكود لان المصارد واوامر الكود غير موجودة
لذلك عند ارفاق المشروع مصغر يحتى وعلى كلاً من الفورم البحث وفورم الدليل مع قاعدة البيانات

ستجد ان المشروع لا يتجاوز من 2 : 4 ميجا بحد اقصي
واذا كان سرعة النت خلينا نقول 256 قد يستغرق الامر معك 5 دقائق تقريباً لرفع المشروع
لا اعتقد ان سرعة الانترنت قد تصل لادنى من ذلك 

اعتقد 5 دقائق هذا كان  حل مشكلته من الاخ الفاضل HASAN6.0
بينما هو كان متواجداً لكن الان عند رفعك للمشروع لا تعلم اذا كان سيكون متواجداً ام لا

على اى حال ارفق الثال المصغر حتى يتثنى من الجميع المساهمة فى الرد بالمساعدة

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

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


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
تم الشكر بواسطة: عبد العزيز البسكري , HASAN6.0
#9
(11-11-18, 02:47 PM)elgokr كتب :
اخى الفاضل ما ارفقته من كود نظرياً لا يوجد به مشكلة
ولكن عملياً دون اختباره ومراجعة الامر فهنا تقع المشكلة

بان لا يمكن لاحد اختبار الكود لان المصارد واوامر الكود غير موجودة
لذلك عند ارفاق المشروع مصغر يحتى وعلى كلاً من الفورم البحث وفورم الدليل مع قاعدة البيانات

ستجد ان المشروع لا يتجاوز من 2 : 4 ميجا بحد اقصي
واذا كان سرعة النت خلينا نقول 256 قد يستغرق الامر معك 5 دقائق تقريباً لرفع المشروع
لا اعتقد ان سرعة الانترنت قد تصل لادنى من ذلك 

اعتقد 5 دقائق هذا كان  حل مشكلته من الاخ الفاضل HASAN6.0
بينما هو كان متواجداً لكن الان عند رفعك للمشروع لا تعلم اذا كان سيكون متواجداً ام لا

على اى حال ارفق الثال المصغر حتى يتثنى من الجميع المساهمة فى الرد بالمساعدة

تحياتى لك
وتمنياتى لك التوفيق


ان شاء الله راح احاول ارفق مثال
الرد }}}
تم الشكر بواسطة: elgokr
#10
كود :
   'ضع هذا في مديول
   Public DGV_Account_Code As Integer
   'هذا في فورم الذي يحوي داتا غريد فيو
   Private Sub DGVTestConn_DoubleClick(sender As Object, e As EventArgs) Handles DGVTestConn.DoubleClick
       'ضع هذا في حدث البل كليك في الداتا غريد فيو
       DGV_Account_Code = 0
       DGV_Account_Code = DataGridViewX1.CurrentRow.Cells(0).Value
       close()
   End Sub
   'هذا في فورم الذي يحوي داتا غريد فيو
   Private Sub EncryptConnectionStringForm_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
       DGV_Account_Code = 0
       DGV_Account_Code = DataGridViewX1.CurrentRow.Cells(0).Value
       close()
   End Sub
   'هذا في كود استدعاء نافذة الغريد فيو
   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       System_Language(Chart_Of_Account) 'this code is general methode
       Dim New_Chart_Of_Account As New Chart_Of_Account
       New_Chart_Of_Account.ShowDialog()
       Chart_Of_Account.show_record_data(DGV_Account_Code)
   End Sub
   Public Sub show_record_data(ByVal x As Integer)
       Dim adp As New SqlClient.SqlDataAdapter("select * from Company_Tree where Account_Code=" & x, sqlconn)
       Dim dt As New DataTable
       dt.Clear()
       adp.Fill(dt)
       If dt.Rows.Count > 0 Then
           Dim dr = dt.Rows(0)
           Account_Status.Checked = dr!Account_Status
           Account_Type.Checked = dr!Account_Type
           Account_Status.Checked = dr!Account_Status
           If dr!Account_Nature = True Then
               Debit.Checked = True
               Credit.Checked = False
           Else
               Debit.Checked = False
               Credit.Checked = True
           End If
           For Each Ctrl In Grp1.Controls
               If TypeOf Ctrl Is TextBox And dt.Columns.Contains(Ctrl.Name) Then
                   Ctrl.Text = dr.Item(Ctrl.Name)
               End If
           Next
           For Each Ctrl In Grp2.Controls
               If TypeOf Ctrl Is TextBox And dt.Columns.Contains(Ctrl.Name) Then
                   Ctrl.Text = dr.Item(Ctrl.Name)
               End If
           Next
           For Each Ctrl In Grp3.Controls
               If TypeOf Ctrl Is TextBox And dt.Columns.Contains(Ctrl.Name) Then
                   Ctrl.Text = dr.Item(Ctrl.Name)
               End If
               If TypeOf Ctrl Is ComboBox And dt.Columns.Contains(Ctrl.Name) Then
                   Ctrl.Text = dr.Item(Ctrl.Name)
               End If
           Next
           For Each Ctrl In Grp4.Controls
               If TypeOf Ctrl Is TextBox And dt.Columns.Contains(Ctrl.Name) Then
                   Ctrl.Text = dr.Item(Ctrl.Name)
               End If
           Next
           Date_Create_Account.Value = dr!Date_Create_Account
           Change.Text = 0
       End If
   End Sub
الرد }}}
تم الشكر بواسطة: مصمم , ay.alhaj



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم