دالة MsgBox

مربع الحوار MsgBox نحتاجه بشكل كبير في مواضع كثيرة من البرنامج ومنه المواضع التالية :
1- تخيير المستخدم بين بدء عملية أو التراجع عنها .
2- التنبيه على خطأ قام به المستخدم .
3- معلومات عن كيفية أداء عملية ما .
4- إظهار نتيجة بحث .

يمكن أن تقسم MsgBox إلى قسمين :
1- لا تعيد قيمة
2- تعيد قيمة

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

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

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

والفرق بينهما عند إرادة استخدام أي نوع منها هو في وضع الأقواس بعد الدالة ووضع الأزرار فمثلا :

MsgBox "أذكر الله"

مقبولة بهذا الشكل وبالشكل التالي أيضاً :

MsgBox ("أذكر الله")

ولكن تظهر رسالة خطأ في الصيغة التالية :

MsgBox( "أذكر الله", vbOKCancel)

ولتصحيح العبارة إما بهذه الطريقة :

If MsgBox("أذكر الله", vbOKCancel) = vbCancel Then

ولست هنا محتاج لحفظ الكلمات بعد علامة يساوي = فحالما تكتبها تظهر لك قائمة لتختار الكلمات التي تريدها :


أو بوضع القيمة الراجعة في متغير مثل :

Dim remsg As Integer
remsg = MsgBox("أذكر الله", vbOKCancel)

أو أي متغير مشابه له . وللتأكد من القيمة الراجعة استخدم الكلمات التي تظهر في القائمة السابقة أو استخدم الأرقام ، انظر الجدول التالي :

الثابت القيمة الراجعة رقما المستخدم ضغط زر
vbOK 1
vbCancel 2
vbAbort 3
vbRetry 4
vbIgnore 5
vbYes 6
vbNo 7


قاعدة الرسالة كالتالي :

MsgBox(prompt[, buttons] [, title] [, helpfile, context])

الوسائط :

رسالة Prompt : نص بين فواصل مزدوجة " ، أقصى حد له من عدد الحروف 1024 ، يمكن أن يظهر النص في سطر واحد أو عدة سطور باستخدام الكلمة المحجوزة VbCrLf بين كل سطر والذي يليه .

الأزرار Buttons : انظر الجدول التالي :

الثابت بالأرقام الرسالة الظاهرة
vbOKOnly 0
vbOKCancel 1
vbAbortRetryIgnore 2
vbYesNoCancel 3
vbYesNo 4
vbRetryCancel 5

 

الأيقونة : أنظر الجدول التالي :

الثابت بالأرقام الرسالة الظاهرة
vbCritical 16
vbQuestion 32
vbExclamation 48
vbInformation 64

أي زر هو الافتراضي :
الزر الافتراضي هو الذي يكون عليه التركيز عند ظهور الرسالة ولا يحتاج المستخدم للضغط عليه سوى ضغط Enter فقط بدون حاجة لنقل التركيز إليه :
vbDefaultButton1 : الزر الأول هو الافتراضي وبالرقم صفر
vbDefaultButton2 :
الزر الثاني هو الافتراضي وبالرقم 256
vbDefaultButton3 :
الزر الثالث هو الافتراضي وبالرقم 512
vbDefaultButton4 :
الزر الرابع هو الافتراضي وبالرقم 768

ونعرف ترتيبه في نفس الكلمة ابتداء من اليسار ، مثال :
vbYesNoCancel
الزر الأول : نعم
الزر الثاني : لا
الزر الثالث : إلغاء الأمر

vbApplicationModal : جعل البرنامج لا يستجيب ككل حتى يقوم بالاستجابة للرسالة بنقر أحد الأزرار وبالأرقام صفر .
vbSystemModal : جعل الرسالة ظاهرة أمامه ولو انتقل لتطبيق آخر مع السماح له بنقل التركيز لأي نافذة أو تطبيق مفتوح وبالأرقام 4096
vbMsgBoxHelpButton : إضافة زر تعليمات لتشغيل ملف التعليمات وليس له قيمة راجعة ولكن عند النقر عليه يتم تشغيل ملف التعليمات المحدد في الجزء helpfile وبالأرقام 16384
VbMsgBoxSetForeground : لم أعرف ما عمله .
vbMsgBoxRight : جعل محاذاة النص من اليمين إلى اليسار وبالأرقام  524288
vbMsgBoxRtlReading : جعل الرسالة عربية الاتجاه وبالرقم وبالأرقام  1048576

لوضع أكثر من ثابت استخدام علامة الجمع (+)

أبسط شكل للرسالة هي :

Msgbox "رسالة"

سيظهر زر موافق في النسخ العربية وزر Ok في النسخة اللاتينية لأنه هذا الزر افتراضي حتى ولو لم تضعه .
تساوي الرسالة السابقة :

MsgBox "رسالة", vbOKOnly


تشاهد أن ثلاثة أزرار تحمل الرقم صفر وهي : vbOKOnly و vbDefaultButton1 و vbApplicationModal وذلك لأنها قيم الرسالة الافتراضية فسواء كتبتها أم تركتها .

في الأكسس 97 كان يمكن جعل السطر الأول في الرسالة أسود عريض باستخدام @ ، ولكن لم يعد هذا متوفراً في الأكسس 2000 ويمكن التحايل على ذلك بالعبارة التالية :

Eval ("MsgBox('السطر الأول الأسود.@سطر عادي.@', 3,  'هنا اكتب العنوان')")

غير ما يلزم مع الانتباه إلى أن الرقم 3 يرمز إلى الثابت vbYesNoCancel ولا يسمح باستخدام النص بدلاً من الرقم هنا .
 

عنوان الرسالة Title : العنوان الذي يظهر فوق الرسالة ، في حالة ترك هذه الوسيطة خالية، يتم عرض "Microsoft Access". يمكن أن يكون العنوان اسم برنامجك أو عنوان نصي يدل على مقصود الرسالة باختصار أو يمكن استخدام احد دوال المجال لعرض قيم معينة مضاف إليه نص آخر أو بدون أو غير ذلك .

ملف التعليمات HelpFile  : وسيطة اختيارية  تشير لملف المساعدة مع المسار .
رقم الموضوع في ملف التعليمات Context : رقم الموضوع في ملف المساعدة المرتبط بعمل مربع الحوار هذا .

مواضيع مرتبطة :

تغيير عناوين الأزرار في رسالة MsgBox .

تغيير موقع رسالة  MsgBox .

إخفاء رسالة MsgBox بعد مدة زمنية محددة .