الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

نافذة رسائل (messagebox) قابلة للتخصيص بالكامل

بدأه najy_zl في 2 ديسمبر 2008 · 2 رد · 1,803 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم...

تحتوي المرفقات على ملف ActiveX DLL باسم DSCDialogs.dll يحتوي على نافذة رسائل (MessageBox) كاملة الوظائف مع قابلية تخصيصها بشكل كامل.

مزايا نافذة الرسائل المخصصة:

1. يمكنها أن تعرض كل الأزرار التي تعرضها الدالة MsgBox في Visual Basic

2. تعيد نفس القيم التي تعيدها الدالة MsgBox في Visual Basic

3. يمكن تحديد مواصفات خط نص الرسالة (نوع الخط، حجم الخط، لون النص).

4. يمكن تحديد مواصفات خط نص الأزرار.

5. يمكن أن تعرض أحد رموز الرسائل الأربعة التي تعرضها الدالة MsgBox و هي Information, Question, Critical, Exclamation

6. يمكن بدل تلك الرموز تعيين صورة لاستعمالها كرمز للرسالة.

7. يمكن أن نضيف إليها سطراً في الأسفل يمثل ارتباطاً أو وصلة (Link) لاستعمالها في فتح موقع على الإنترنت أو فتح ملف، ... إلخ. مع تحديد مواصات خط نص هذه الوصلة.

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

9. يمكن تحديد ما إذا كان اتجاه الرسالة عربياً أم لا. إذا كان عربياً فإن عناوين الأزرار تكون بالعربي (موافق، إلغاء الأمر، ... إلخ) و مرتبة من اليمين إلى اليسار، كما أن رمز الرسالة يكون من اليمين. و إذا كانت غير عربية فإن عناوين الأزرار تكون بالإنجليزي(OK، Cancel، ... إلخ) و مرتبة من اليمين إلى اليسار، كما أن رمز الرسالة يكون من اليسار.

10. يمكن تحديد لون خلفية نافذة الرسالة.

تسجيل المكتبة:

1. نسخ الملفين DSCDialogs.dll و DSCDialogs.lib إلى المجلد System32 التابع للنظام.

2. تسجيل المكتبة باختيار الأمر "تشغيل" (Run) من القائمة "ابدأ" (Start) ثم كتابة الأمر: regsvr32 DSCDialogs.dll ثم النقر على الزر "موافق" (OK). سيعطينا رسالة بنجاح التسجيل.

لاستعمال الرسالة المخصصة في أي مشروع:

1. من داخل Visual Basic نختار الأمر References من القائمة Project

2. في قائمة المراجع نبحث عن البند DSCDialogs و نقوم بتحديده. ثم ننقر الزر OK

3. نضع التصريح التالي في Module:

  1. Public MyMsg As New DSCDialogs.TCustomMsgBox
  2. 'أو هكذا فقط
  3. Private MyMsg As New TCustomMsgBox
  4.  

نستعمل خصائص الكائن MyMsg (أو أي اسم أعطيته للمتغير) لتحديد خصائص الرسالة، و التي تشمل:

1. الخاصية Text: نص الرسالة - String

2. الخاصية Title: عنوان الرسالة - String. إذا لم نحدد عنواناً للرسالة فسيكون عنوانها هو عنوان المشروع App.Title

3.الخاصية Buttons: عدد و نوع الأزرار، و يمكن أن تأخذ إحدى القيم التالية:

= Btn_OKOnly: الزر "موافق" فقط. هذا هو الافتراضي.

= Btn_OKCancel: الزرين "موافق" و "إلغاء الأمر".

= Btn_YesNo: الزرين "نعم" و "لا".

= Btn_YesNoCancel: الأزرار "نعم" و "لا" و "إلغاء الأمر".

= Btn_RetryCancel: الزرين "إعادة المحاولة" و "إلغاء الأمر".

= Btn_AbortRetryIgnore: الأزرار "إحباط" و "إعادة المحاولة" و "تجاهل".

4. الخاصية Icon: رمز الرسالة (نفس رموز MsgBox). يمكن أن تأخذ إحدى القيم التالية:

= Icon_None: دون رمز. هذا هو الافتراضي.

= Icon_Information رمز معلومات

= Icon_Question رمز سؤال

= Icon_Exclamation رمز تعجب

= Icon_Critical رمز خطأ

5. الخاصية CustomIcon: من النوع StdPicture. صورة يتم استعمالها كرمز مخصص للرسالة بدل الرموز الافتراضية الآربعة. لاستعمال هذه الصورة كرمز للرسالة يجب ضبط الخاصية Icon على Icon_None

6. الخاصية LinkText: نص الوصلة أو الاتباط التشعبي. يظهر هذا النص أسفل الرسالة، و يمكن النقر عليه لفتح المسار الذي نحدده له كنص.

7. الخاصية BackColor: لون خلفية نافذة الرسالة.

8. الخاصية ForeColor: لون نص الرسالة.

9. الخاصية LinkColor: لون نص الوصلة أو الارتباط التشعبي. الافتراضي أزرق.

10. الخاصية Center: من النوع Boolean. تحديد ما إذا سيتم إظهار الرسالة في منتصف الشاشة (True) أو استعمال الخاصيتين Left و Top المذكورتين فيما بعد (False). القيمة الافتراضية هي True

11. الخاصية Left: من النوع Single. موقع نافذة الرسالة أفقياً على الشاشة. يجب ضبط الخاصية Center على False لاستعمال هذه الخاصية. القيمة الافتراضية 0. إذا كانت القيمة سالبة (أقل من 0) فإن النافذة تظهر عند أقصى يمين سطح المكتب.

12. الخاصية Top: من النوع Single. موقع نافذة الرسالة رأسياً على الشاشة. يجب ضبط الخاصية Center على False لاستعمال هذه الخاصية. القيمة الافتراضية 0. إذا كانت القيمة سالبة (أقل من 0) فإن النافذة تظهر عند أقصى أسفل سطح المكتب، فوق الـ TaskBar

13. الخاصية RightToLeft: من النوع Boolean. تحديد اتجاه قراءة و محاذاة نص الرسالة و الأزرار. إذا كانت True (الافتراضي) فإن الرسالة تكون من اليمين إلى اليسار، و الرمز - إذا كان موجوداً - يظهر على اليمين، و عناوين الأزرار تكون بالعربي و مرتبة من اليمين إلى اليسار. أما إذا كانت False فإن الرسالة تكون من اليسار إلى اليمين، و الرمز - إذا كان موجوداً - يظهر على اليسار، و عناوين الأزرار تكون بالإنجليزي و مرتبة من اليسار إلى اليمين.

14. الخاصية TextFont: تحديد مواصفات خط نص الرسالة. عندما تكتب نقطة بعد اسم هذه الخاصية ستظهر لك خصائص الخط المعروفة.

15. الخاصية LinkFont: تحديد مواصفات خط نص الوصلة أو الارتباط التشعبي.

16. الخاصية ButtonFont: تحديد مواصفات خط نص الأزرار.

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

  1. MyMsg.BackColor = vbBlue
  2. MyMsg.ForeColor = vbWhite
  3.  

و إذا أردت أن يكون خط الأزرار أندلسي و حجمه 12 فاستعمل كود كالتالي:

  1. MyMsg.ButtonFont.Name = "Andalus"
  2. MyMsg.ButtonFont.Size = 12
  3.  

أما طريقة استدعاء نافذة الرسالة فقد حاولت أن أجعلها قريبة من صيغة الدالة MsgBox حيث توجد طرقتان، كلتاهما تعيد نفس القيم التي تعيدها الدالة MsgBox، أي vbOK, vbCancel, vbYes، ... إلخ.

1. استعمال الطريقة Show2 دون بارامترات، و بالتالي ستستخدم آخر قيم للخصائص.

2. استعمال الطريقة Show مع تمرير بارامترات كما في الصيغة التالية:

  1. Show(AText As String, AButtons As MsgBoxButtons, ATitle As String, AIcon As MsgBoxIcons, ACustomIcon As StdPicture, ARightToLeft As Boolean)
  2.  

جميع البارامترات اختيارية ما عدا البارامتر الأول (AText) الذي هو نص الرسالة فمطلوب.

بقية البارامترات هي:

= AButtons: عدد و نوع الأزرار.. الافتراضي الزر "موافق" فقط.

= ATitle: عنوان الرسالة. الافتراضي عنوان التطبيق.

= AIcon: رمز الرسالة. الافتراضي دون رمز.

= ACustomIcon: صورة تستعمل كرمز مخصص. الافتراضي لا شيء.

= ARightToLeft: اتجاه قراءة و محاذاة النص و الأزرار. الافتراضي True أي من اليمين إلى اليسار.

أمثلة على استخدام الرسالة المخصصة:

  1. Private Sub Command1_Click()
  2. Dim MsgTxt As String
  3.  
  4. MsgTxt = "بسم الله الرحمن الرحيم"
  5. MsgTxt = MsgTxt & vbCrLf & vbCrLf & "بقليل من المجهود الإضافي و حسن استخدام تعليمات Visual
    Basic "
  6. MsgTxt = MsgTxt & "يمكنك أن تصنع بهذه اللغة معظم الأشياء التي قد تخطر على بالك."
  7.  
  8. With MyMsgBox
  9. .Title = "أهلاً و سهلاً"
  10. .Text = MsgTxt
  11. .Buttons = Btn_OKCancel
  12. .Icon = Icon_None
  13. Set .CustomIcon = Image2.Picture
  14. .Center = True
  15. '.Left = 1000
  16. '.Top = 1000
  17. .RightToLeft = True
  18. .BackColor = &HA96D2B
  19. .ForeColor = vbWhite
  20. .LinkColor = vbGreen
  21. .LinkText = ""
  22. .Show2
  23. End With
  24. End Sub
  25.  
  26. Private Sub Command3_Click()
  27. MyMsgBox.LinkText = ""
  28. MyMsgBox.BackColor = vbButtonFace
  29. MyMsgBox.ForeColor = vbBlue
  30. MyMsgBox.Center = False
  31. MyMsgBox.Top = -1
  32. MyMsgBox.Left = 0 ' "Test Message"
  33. MyMsgBox.Show "This is just a test English text!!", , vbNullChar, Icon_Information, , False
  34. End Sub
  35.  
  36. Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
  37. MyMsgBox.LinkText = ""
  38. MyMsgBox.BackColor = &H8CE6F0
  39. MyMsgBox.ForeColor = vbRed
  40. MyMsgBox.Center = True
  41. If MyMsgBox.Show("هل تريد بالتأكيد إغلاق البرنامج و إنهاء جلسة العمل؟", Btn_YesNo, "تأكيد ا
    لإغلاق", Icon_Question) = vbNo Then
  42. Cancel = True
  43. End If
  44. End Sub
  45.  

أخيراً و لتعم الفائدة فقد أرفقت الـ Source Code الخاص بالمكتبة لمن يريد أن يعدل فيها أو يطورها.

CustomMsgBox.rar

نرجو الاستفادة و السلام.

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

#2

فعلا إبداع متميز

تحياتي لك ... وتشكر على عرض الكود لنا ...

كلمة شكر لا توفيك ..

تقبل التحية

OMANI FOR EVER

-------------------------------------------------

post-12787-12780191801974.jpg

-------------------------------------------------

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…