اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

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

قام بنشر

السلام عليكم

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

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

آمل منكم الآتي :

1 - المحاولة مع الكود فقد ينجح ويكفينا تعب التصميم من البداية .

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

Option Compare Database

Option Explicit


Private m_hHook As Long


Private Const IDOK = 1

Private Const IDCANCEL = 2

Private Const IDABORT = 3

Private Const IDRETRY = 4

Private Const IDIGNORE = 5

Private Const IDYES = 6

Private Const IDNO = 7


Private Const WH_CBT = 5

Private Const GWL_HINSTANCE = (-6)

Private Const HCBT_ACTIVATE = 5


Private Declare Function GetCurrentThreadId Lib "kernel32" () As Long

Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _

                         (ByVal hwnd As Long, ByVal nIndex As Long) As Long

Private Declare Function SetDlgItemText Lib "user32" Alias "SetDlgItemTextA" _

                         (ByVal hDlg As Long, ByVal nIDDlgItem As Long, _

                         ByVal lpString As String) As Long

Private Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" _

                         (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, _

                         ByVal dwThreadId As Long) As Long

Private Declare Function UnhookWindowsHookEx Lib "user32" _

                         (ByVal hHook As Long) As Long


Public Sub MessageBoxH(hwndThreadOwner As Long)

  Dim hInstance As Long

  Dim hThreadId As Long

  

  hInstance = GetWindowLong(hwndThreadOwner, GWL_HINSTANCE)

  hThreadId = GetCurrentThreadId()


  m_hHook = SetWindowsHookEx(WH_CBT, AddressOf MsgBoxHookProc, hInstance, hThreadId)

End Sub


Private Function MsgBoxHookProc(ByVal uMsg As Long, ByVal wParam As Long, _

                                ByVal lParam As Long) As Long

  If uMsg = HCBT_ACTIVATE Then

    SetDlgItemText wParam, IDOK, "موافق"

    SetDlgItemText wParam, IDCANCEL, "إلغاء الأمر"

    SetDlgItemText wParam, IDABORT, "إحباط"

    SetDlgItemText wParam, IDRETRY, "إعادة المحاولة"

    SetDlgItemText wParam, IDIGNORE, "تجاهل"

    SetDlgItemText wParam, IDYES, "نعم"

    SetDlgItemText wParam, IDNO, "لا"

    UnhookWindowsHookEx m_hHook

  End If


  MsgBoxHookProc = False

End Function
ولتنفيذ الكود ضع هذا الكود في حدث عند النقر لزر button :
  'هذه الإجراء مسؤول عن تعريب الأزرار

  MessageBoxH Me.hwnd

  'بعدها مباشرة استدعاء الدالة بالطريقة المعروفة

  MsgBox "لقد أصبحت عناوين الأزرار باللغة العربية" & vbCrLf & "مع تحيات عامر جوز" _

  , vbInformation + vbMsgBoxRtlReading + vbMsgBoxRight, "الفريق العربي للبرمجة"


  'باقي الأزرار

  MessageBoxH Me.hwnd

  MsgBox "باقي الأزرار", vbYesNoCancel + vbMsgBoxRtlReading + vbMsgBoxRight

  MessageBoxH Me.hwnd

  MsgBox "باقي الأزرار", vbAbortRetryIgnore + vbMsgBoxRtlReading + vbMsgBoxRight

تحياتي .

  • Thanks 1
قام بنشر (معدل)

السلام عليكم

شكرا لكم جميعا لتفاعلكم مع الموضوع ،

الحقيقة عمل معي مع الـ XP للويندوز والأكسس وبعد مساهمة أخي العزيز ابن مسقط فأنا أتوقع أن السبب هو الأكسس وليس النظام .

عموما عملت دالة لتقوم بإظهار الرسائل العربية باسم ArbMsgBox بدلا من MsgBox الأصل على أن تقوم الدالة نفسها بتغيير اتجاه الصندوق ومحاذاة النص لليمين حيث لا داعي لكتابتها أثناء طلب الرسالة . ولكــــــــــــــن ..

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

ثانيا لم يعمل التعريب أثناء جعل النموذج للـ Pop Up = On .

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

تحياتي .

الملفات المرفقة

ArbMsgBox.zip ( 25.55ك ) عدد مرات التنزيل: 125

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

السلام عليكم

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

الآن .. الدالة تعمل مع النماذج والتقارير والوحدات النمطية .

والمشكلة الوحيدة الآن التي أواجهها الآن هي عدم عمل الدالة إذا كان النموذج منبثق PopUp وسوف أستمر في المحاولة إن شاء الله .

إضطررت لنجاح عمل الدالة أن أصمم نموذج باسم ArbMsgBox_frm آمل عدم حذفه أو التعديل في خصائصه .

تحياتي .

الملفات المرفقة

ArbMsgBox_2000.zip ( 35.14ك ) عدد مرات التنزيل: 92

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

السلام عليكم

عذرا ، يفترض أن أضع نسخة 2000 وبالخطأ وضعت نسخة 2002 .

تحياتي .

الملفات المرفقة

ArbMsgBox_2000.zip ( 32.73ك ) عدد مرات التنزيل: 106

تم تعديل بواسطه أبو هادي
  • 1 year later...
قام بنشر (معدل)

السلام عليكم

تم تنقيح المثال ومنها الإستغناء عن نموذج الخاص بالرسائل وتم الإستعاضة عنه بإنشاء نموذج جديد ثم حذفه مباشرة .

لا يزال يعاب على الأدارة أنها لا تعمل مع النماذج المنبثقة .

تحياتي .

الملفات المرفقة

ArbMsgBox_Ver1.rar ( 20.83ك ) عدد مرات التنزيل: 2

تم تعديل بواسطه أبو هادي
  • 15 years later...

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