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

صندوق رسائل عربي ( الإصدار الأول )


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

السلام عليكم

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

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