اذهب الي المحتوي
أوفيسنا

|و| واجهة النموذج اختيارية عربي - انجليزي


أبو وليد

الردود الموصى بها

اردت المساعدة في كيفية تحويل النموذج من انجليزي الى عربي والعكس

من مثال أوقات الصلاة حاولت اقتباس الفكرة ولم استطع

المهم ما عرفته هو ان التسمية الاخرى تكتب في tag

واخذت كود التحويل واريد بعض المساعده فيه

Private Sub SetLang()
  Dim ctl As Control
  Dim TempCaption As String

'    If Me.Lang.Caption = "English" Then sLang = "Eng" Else sLang = "Arb"

    TempCaption = Me.Caption
    Me.Caption = Me.Tag
    Me.Tag = TempCaption
    For Each ctl In Me
      With ctl
        ' Change Form Left 2 Right Or Rigth 2 Left .Left = Me.Width - (.Left + .Width)
' كيف تتم حسابات اليمين واليسار
        ' Change Language 4 LabelBox And TextAlign
        If .ControlType = acLabel Then
            If Not .Name Like "[gp]0*" Then .TextAlign = GetTextAlign(.TextAlign)' الكود وقف هنا لماذا؟؟؟
            If .Tag <> "" Then
                TempCaption = .Caption
                .Caption = .Tag
                .Tag = TempCaption
            End If
        End If

        ' Change Language 4 TextBox
        If .ControlType = acTextBox Then
            TempCaption = .Format
            .Format = .Tag
            .Tag = TempCaption
            .TextAlign = GetTextAlign(.TextAlign)

        End If

        ' Show Language Colum
        If .ControlType = acComboBox Then
            If sLang = "Arb" Then .ColumnWidths = "0;567;0"
            If sLang = "Eng" Then .ColumnWidths = "0;0;567"
' ماذا تعني هذه الارقام
            .Requery
        End If

     End With
    Next ctl

    Call GetCityInf
    Call fDate(mDate)

End Sub

ولو امكن شرح كامل الكود فجزاكم الله خيرا

تم تعديل بواسطه أبو وليد
رابط هذا التعليق
شارك

السلام عليكم

أخي ابا الوليد :fff: ، بارك الله فيك

أولا : لا أنصحك بإستخدام الكود أعلاه لأن به أمور متعددة وضعت لأهداف خاصة بذلك البرنامج.

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

مع الاحترام

ChangeLanguageExample.rar

  • Like 1
رابط هذا التعليق
شارك

السلام عليكم

مثال جميل وشرح رائع من الأستاذ خضر

يمكنك الاعتماد عليه بكل جدارة أخي أبو الوليد .

وفعلاً كما ذكر الأستاذ خضر به أمور خاصة يجب مراعاتها

أما سؤال كيف يتم احتساب واليسار

في الحقيقة الدالة لا تعرف إن كنت تتبع يمينًا أو يسارًا

إنما تقوم بإعادة وضع الكائن - مربع تسمية ، مربع نص ، ... - باالنسبة ليسار النموذج بالمعادلة التالية

.Left = Me.Width - (.Left + .Width)

والعملية الحسابية تعني

اجعل بعد الكائن من يسار النموذج =

عرض النموذج - ( بعد الحالي للكائن عن يسار النموذج + عرض الكائن )

حيث :

.Left : بعد الكائن عن يسار النموذج

me.width: عرض النموذج

.Width: عرض الكائن

ملحوظة مهمة جدًا:

في حالة وجود كائن بالنموذج من نوع "مجموعة خيارات" فإن الدالة تغيير الاتجاه ستعطي نتائج غير متوقعة .

لذلك تحتاج إلى إضافة أخرى سواء على الدالة المذكورة أعلاه أو مثال الأستاذ خضر .

أخوكم أبو سليمان

  • Like 1
رابط هذا التعليق
شارك

جزاكم الله الف خير

في حالة وجود كائن بالنموذج من نوع "مجموعة خيارات" فإن الدالة تغيير الاتجاه ستعطي نتائج غير متوقعة .

لذلك تحتاج إلى إضافة أخرى سواء على الدالة المذكورة أعلاه أو مثال الأستاذ خضر .

نعم يوجد

ومع تجربت الكود اعلاه نجحت مع بعض التغييرات

رابط هذا التعليق
شارك

السلام عليكم

الحقيقة الكود مصمم ليعمل مع كل النماذج ، ولكني لم أطوره بما فيه الكفاية لعدم حصولي على أي تأييد يذكر وقتها .

وأعدكم على تطويره في أقرب فرصة إن شاء الله ليكون في وحدة نمطية منفصلة ويمكن استدعاؤه من كل النماذج .

ملاحظة لأخي أبو سليمان :

حاول بقدر ما تستطيع أن تتخلى عن أكسس 2000 ، في أسوأ نسخة للأكسس حتى الآن .

لقد أنزلت مثال أخي خضر ولكني لم أطلع عليه بعد .

تحياتي .

  • Like 1
رابط هذا التعليق
شارك

السلام عليكم

أخي الأستاذ أبو هادي

نعم الكود كما ذكرت ؛ ولكن ليس الكود الموجود أعلاه - فهمو من نموذج أوقات الصلاة وقد أجريت عليه بعض التعديلات بما يتناسب مع النموذج وللأسف قمت بحذف ما لم أحتج إليه - إنما الكود الموجود في نموذج نتيجة التقويم .

كما أود الإشارة إلى محاولتي في اخراج كود تغيير اللغة في وحدة نمطية عامة في برنامج الصلاة وقد استخدمتها فقط للتقارير يمكنك ملاحظة ذلك - وهي ليست كاملة لأني اخترت الأجزاء التي تخص التقارير فقط - .

ملاحظة لأخي أبو سليمان :

حاول بقدر ما تستطيع أن تتخلى عن أكسس 2000 ، في أسوأ نسخة للأكسس حتى الآن .

عفوًا أخي أبو هادي : ما مناسبة هذا التوجيه هنا!!!

ومع ذلك فأنا أستخدم نسخة XP ولكني جعلت افتراضات ملفات الآكسس على أكسس 2000 .

ونسخة أوفيس ألفين لم أستخدمه إلا قليلاً في البدايات قبل Xp ، وعدت بعدها إلى 98 ثم Xp عند انتشارها.

ولم أنتقل إلى أوفيس 2003 حتى اللأن .

أخوكم أبو سليمان

تم تعديل بواسطه أبوسليمان
رابط هذا التعليق
شارك

كما أود الإشارة إلى محاولتي في اخراج كود تغيير اللغة في وحدة نمطية عامة في برنامج الصلاة وقد استخدمتها فقط للتقارير يمكنك ملاحظة ذلك - وهي ليست كاملة لأني اخترت الأجزاء التي تخص التقارير فقط - .

شكرا عزيزي لقد استفدت منها ولكن لا تبطق الا على النموذج الاساسي والفرعي لا تتغير لغته

فهل لي بكيفية ذلك

رابط هذا التعليق
شارك

السلام عليكم

لقد توصلت إلى حل لتبادل مواقع الأعمدة في نماذج الـ datasheet يمكن الإستفادة منه في تبديل اللغة :

Sub ChangeColumnOrder(eMe As Form)
  Dim Cols
  Dim Ctrl As Control
  Dim Ctrls As Long
  Dim Count As Integer
  
  On Error Resume Next
  
  If eMe.DefaultView <> 2 Then Exit Sub
  ReDim Cols(1 To eMe.Controls.Count) As String
  
  For Each Ctrl In eMe.Controls
    With Ctrl
      If .Section = 0 Then
        If .ControlType <> acLabel Then
          Count = Count + 1
          Cols(.ColumnOrder) = .Name
        End If
      End If
    End With
  Next

  If Count < 2 Then Exit Sub
  Ctrls = Count
  
  For Count = 1 To Ctrls
    eMe(Cols(Count)).ColumnOrder = Ctrls - eMe(Cols(Count)).ColumnOrder - Count
  Next Count
End Sub

تحياتي .

تم تعديل بواسطه أبو هادي
رابط هذا التعليق
شارك

المشكله السابقه ممكن التغلب عليها

المشكله الاخرى

عنوان النموذج ما يتحول للعربي وياليت يكون على اليمن

تنسيق now الوقت والتاريخ سويا

اعتقد بعد ذلك يمكن ان يكون ثابت لجميع النماذج

وفقك الله ورعاك

رابط هذا التعليق
شارك

السلام عليكم

ما شاء الله عليك أخي أبو هادي

عمل مبدع حقًا .

لي ملاحظة بسيطة

أخي رأيتك جعلت الوسيطة الممررة للدوال من نوع Form

ماذا لو كنت أرغب أن استخدمه في التقارير ؟ ! الدالة لأن الكائن ليس بـ Form...

هل يلزم ذلك أن نجعل للتقارير دوال مثلها ؟ ! لا أظن ذلك ؛ وأنت المبدع .

ولعل الحل يكون بجعل الوسيطة من نوع Object

أخي أبو الوليد

كما رأيت أخي قد سبقني إلى ما تريد الأستاذ أبو هادي بحلوله المبدعة .

أخوكم أبو سليمان

رابط هذا التعليق
شارك

السلام عليكم

أخي أبا هادي وأبا سليمان وأبا الوليد :fff::fff::fff: ، بارك الله فيكم جميعا

سأجري بحث وافي عن كل ما جئتم به وأوافيكم قريباُ بنتائجه التي أتوقع من الان أن تكون أكثر من رائعة.

مع فائق احترامي وتقديري لكم جميعاُ.

تم تعديل بواسطه خضر الرجبي
رابط هذا التعليق
شارك

السلام عليكم

حياكم الله جميعا ورعاكم .

الحقيقة أن الكود رأيته شبه جاهز في إحدى برامجي التي لم ترى النور وعدلت عليه أمور بسيطة عدا كود تبديل مواقع الأعمدة للـ datasheet فهو حديث الكتابة .

فحصت مشكلة الإزاحة وتوصلت أنها تحصل مع النماذج التي اتجاهها من اليمين إلى اليسار أما العكس فلا مشكلة وسأقوم بفحص الكود ودراسة التغلب عليها .

عنوان النموذج أعتقد أني أغفلته دون قصد وسأقوم بإضافته ولكن إتجاهه قد لا يمكننا عمل ذلك إلى بحيل .

بالنسبة للوسيطة سأقوم بتبديلها .

تحياتي .

رابط هذا التعليق
شارك

السلام عليكم

- لم أستطع التغلب على مشكلة الإزاحة في النماذج ذات الإتجاه يمين إلى اليسار .

- تم التعامل مع تسمية النموذج .

- تم تبديل الوسيطة من Form إلى Object .

- تم تطويره ليتعامل مع كل النماذج الفرعية والنماذج الفرعية للفرعية وهكذا دون حد أي Subform/Subform/Subform/............ وهكذا .

يحتاج إلى تجربة مع التقارير والمحتوية تقارير فرعية بالتحديد حيث أعتقد أن هناك مشكلة .

تحياتي .

ChangeOrientation20050306.rar

رابط هذا التعليق
شارك

بارك الله فيكم جميعا

اخي أبو هادي لقد حذفت جزء من الكود ولم يعد النموذج يزحف

 If UBound(GrpCtl) = -1 Then GoTo ExitSub
  
  For Count = 1 To UBound(GrpCtl)
    With GrpCtl(Count)
      .Left = eMe.Width - (GrpLeft(Count) + GrpWidth(Count))
      .Width = GrpWidth(Count)
    End With
    eMe.Width = FormWidth
 Next Count  

تم تعديل بواسطه أبو هادي
رابط هذا التعليق
شارك

السلام عليكم

أخي الأستاذ أبو هادي

الأداة تعمل على التقارير كما تعمل على النماذج تمامًا دون أي مشاكل

عند استدعائها من حدث - عند التنسيق لرأس الصحفة - .

كما أنوه أخي إلى ملاحظة أخي خضر في المشاركة التالية :

http://www.officena.net/ib/index.php?showt...indpost&p=30979

بقوله :

ما تبقى للحل في موضوع تحويل اللغة هو أن الاقتران الاخير الذي طورته قد استخدمته هنا لبيئة التقارير frmRepa وهو يعمل بشكل رائع ، بإستثناء لعنصر التحكم acTabctl (الصفحات)، أرجو من حضرتكم معاينة المشكلة ومحاولة حلها . ويوجد ملاحظة وضعتها في الكود.
آمل ملاحظة ذلك

أخوك أبو سليمان

تم تعديل بواسطه أبوسليمان
رابط هذا التعليق
شارك

السلام عليكم

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

شكرا لك على جهودك أخي أبو سليمان .

لقد تم التعديل على الكود ليحتوي أداة الـ TabControl .

تحياتي .

ChangeOrientation20050311.rar

رابط هذا التعليق
شارك

  • 3 weeks later...

السلام عليكم

أخي الأستاذ أبو هادي

فيما يبدوا أخي أن دالة NewSource لا تتعامل مع القوائم التي لا تكون مصادرها عبارة عن جملة SQL

ومنها استوحيت دالة جديدة اسميتها ShowColumn

لكي تتعامل مع جميع أنواع المصادر للقوائم لأنها لا تعتمد عليها

وإنما تعتمد على العمود المنضم ، وعدد الأعمدة في القائمة ، عرض الأعمدة

إليك الدالة أرجو تقييمها :

Function ShowColumn(ByVal BoundCol As Byte, _
                    ByVal CountCol As Byte, _
                    ByVal WidthCols As String) As String

 Dim WidCol(3) As String
 Dim Pos As Byte, I As Byte
 Dim OldWidths As String
      
       OldWidths = WidthCols
       ShowColumn = OldWidths
       
       If BoundCol <> 1 Then Exit Function
       If CountCol <> 3 Then Exit Function
       
       For I = 1 To 3
         Pos = InStr(1, OldWidths, ";")
         If Pos <> 0 Then
            WidCol(I) = Left(OldWidths, Pos - 1)
            OldWidths = MID(OldWidths, Pos + 1, Len(OldWidths))
         Else
            WidCol(I) = OldWidths
         End If
       Next I
       ShowColumn = WidCol(1) & ";" & WidCol(3) & ";" & WidCol(2)
  
End Function
* ملحوظة : يلزم أن يكون العمود المنضم هو العمود الأول. استبدل السطر التالي
          .RowSource = NewSource(.RowSource)
بالسطر
         .ColumnWidths = ShowColumn(.BoundColumn, .ColumnCount, .ColumnWidths)

وذلك في دالة ChangeOrientation

محبكم

أبو سليمان

رابط هذا التعليق
شارك

السلام عليكم

عزيزي أبو سليمان .. بارك الله فيك .

لابد أن تكون الدالة ممتازة وخصوصا أنها من أبي سليمان ، ولكنها ليست بديلة عن الدالة الأولى حيث اختلاف الوظيفة .

فالدالة الأولى للتبديل بين العمودين الثاني والثالث لمصدر البيانات عندما يكون أحدهما بالعربي والآخر بالإنجليزي .

والدالة الأخرى للتبديل بين العمودين الثاني والثالث لعرض الأعمدة .

تحياتي .

رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information