الاحداث واجراءات الحدث في قواعد البيانات

الناقل : elmasry | الكاتب الأصلى : zahrah | المصدر : www.arabteam2000-forum.com

الأحداث وإجراءات الحدث في قواعد البيانات
يتم كتابة التعليمات البرمجية لـ Microsoft Visual Basic في وحدات تسمى إجراءات. يحتوي الإجراء على سلسلة من عبارات Visual Basic التي تنفذ عملية أو تحسب قيمة. يعتبر إجراء الحدث هو إجراء يتم تشغيله استجابة لبدء تشغيل حدث من قبل المستخدم أو التعليمات البرمجية للبرنامج أو تشغيله بواسطة النظام.
ما هو الحدث؟
الحدث هو إجراء محدد يقع في أو مع كائن معين. يمكن أن يستجيب Microsoft Access لأحداث مختلفة: نقرات الماوس وتغييرات في بيانات وفتح نماذج أو إغلاقها وأشياء أخرى كثيرة. تعتبر الأحداث عادة هي النتيجة لإجراء مستخدم.
باستخدام إجراء حدث، يمكنك إضافة الاستجابة المخصصة الخاصة بك إلى حدث يقع في نموذج أو تقرير أو عنصر تحكم.
ما هو الإجراء؟
الإجراء عبارة عن وحدة من التعليمات البرمجية لـ Microsoft Visual Basic. يحتوي الإجراء على سلسلة من العبارات والأساليب التي تنجز عملية أو تحسب قيمة. على سبيل المثال، يستخدم إجراء الحدث التالي أسلوب OpenForm لفتح نموذج (طلبات):

Private Sub OpenOrders_Click()
DoCmd.OpenForm "Orders"
End Sub

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

إجراءات الدالة
الإجراءات دالة (غالباً ما تسمى دالة) تُرجع قيمة، مثل نتيجة حساب. تتضمن Microsoft Visual Basic العديد من الدالات المضمنة، على سبيل المثال، ترجع الدالة Now التاريخ والوقت الحالي. بالإضافة إلى تلك الدالات المضمنة، يمكنك إنشاء الدالات المخصصة الخاصة بك.
نتيجة لإرجاع الدالات للقيم، يمكنك استخدامها في تعبيرات. يمكنك استخدام الدالات في التعبيرات في العديد من الأماكن في Microsoft Access أو في عبارة أو أسلوب Visual Basic أو في العديد من إعدادات الخصائص أو في تعبير المعايير في عامل تصفية أو استعلام.
يُرجع المثال التالي لإجراء دالة FirtOfNextMonth، تاريخ اليوم الأول من الشهر بعد التاريخ الحالي:
Function FirstOfNextMonth()
 FirstOfNextMonth = _
 DateSerial(Year(Now), Month(Now) + 1, 1)
End Function

تتكون هذه الدالة المخصصة من عبارات التعيين المفردة والتي تعين نتائج التعبير (في الجانب الأيمن من علامة يساوي) إلى اسم الدالة، FirstOfNextMonth (على الجانب الأيسر من علامة المساواة). تحسب الدالة النتيجة باستخدام الدالات DateSerial وYear وNow وMonth لـ Visual Basic المضمنة.
بعد إنشاء هذه الدالة، يمكنك استخدامها في التعبير في أي مكان في Microsoft Access. على سبيل المثال، يمكنك تحديد أن يعرض مربع النص اليوم الأول من الشهر بعد التاريخ الحالي كقيمة الافتراضية للمربع بإعداد الخاصية قيم_افتراضية الخاصة بعنصر تحكم مربع نص للتعبير التالي في صفحة الخاصية:
=FirstOfNextMonth()

ملاحظة لاستخدام دالة كإعداد لخاصية، يجب أن تكون الدالة في الوحدة النمطية للنموذج أو للتقرير أو في الوحدة النمطية القياسية. لا يمكنك استخدام دالة في فئة الوحدة النمطية غير المصاحبة للنموذج أو التقرير كإعداد خاصية نموذج أو تقرير.
أمثلة استخدام إجراء الحدث كاستجابة لحدث
عندما تنشئ إجراء حدث لأحد الكائنات، يضيف Microsoft Access قالب إجراء حدث مسمى للحدث والكائن إلى وحدة نمطية لنموذج أو تقرير. كل ما تحتاج فعله هو إضافة تعليمة برمجية تستجيب بالطريقة التي تريدها عندما يقع الحدث للنموذج أو التقرير.
افترض أنك تريد فتح نموذج "تفاصيل منتج" عندما تنقر فوق زر أمر "تفاصيل منتج" في نموذج "طلبات". تبين الأمثلة التالية كيفية القيام بذلك باستخدام إجراء حدث.
Posted Image
1. لتشغيل إجراء حدث عند نقر المستخدم فوق زر الأمر، انقر فوق الخاصية عند_النقر للأمر...
2. ... انقر فوق الزر إنشاء ، ثم انقر فوق منشئ التعليمات البرمجية لإضافة تعليمة Visual Basic برمجية لإجراء الحدث.
Posted Image
1. تستخدم إجراءات الحدث ProductDetails_Click الأسلوب OpenForm لفتح نموذج "تفاصيل المنتج".

تعيين قيمة عنصر تحكم أو خاصية كاستجابة لحدث
بواسطة تعيين قيم جديدة لعناصر التحكم والخصائص كاستجابة إلى الأحداث التي تقع في نموذج أو تقرير، يمكنك جعل الكائنات التي أنشأتها تعمل معاً حتى تصبح سهلة الاستخدام.
إليك بعض المواقف الشائعة التي تستدعي تعيين قيم بواسطة ماكرو أو إجراء حدث:
تعيين قيمة لعنصر تحكم في أحد النماذج مساوية لقيمة عنصر التحكم في نموذج آخر
على سبيل المثال، يمكنك وضع زر الأمر "فتح طلبات" في نموذج "العملاء" الذي يفتح نموذج "الطلبات" ويقوم بتعبئة معلومات الفوترة تلقائياً من نموذج "العملاء".
Posted Image
1. بواسطة النقر فوق الزر "فتح طلبات" يتم فتح نموذج "الطلبات" مع معلومات الفوترة من نموذج "العملاء".
تعيين خاصية نموذج أو عنصر تحكم كاستجابة إلى تحديد أو حدث آخر
يمكنك استخدام ماكرو أو إجراء حدث لتعيين خاصية نموذج أو عنصر تحكم من أجل:
• إخفاء عنصر تحكم أو إظهاره استناداً إلى قيمة عنصر تحكم آخر. على سبيل المثال، قد تحتاج إلى إخفاء عنصر التحكم DateDue "تاريخ الاستحقاق" في نموذج Orders "الطلبات" إذا تم دفع المبلغ المستحق للطلب (إذا كانت قيمة عنصر التحكم Paid "دفع" هي "نعم") أو إظهاره إذا كان لا يزال مستحق.
• تعطيل عنصر تحكم أو تأمينه استناداً إلى قيمة لعنصر تحكم آخر. على سبيل المثال، يمكنك تعطيل عنصر التحكم "رخصة السائق" إذا كانت قيمة عنصر التحكم "عمر" أقل من السن المقرر في رخصة السائق.
• عرض مجموعات مختلفة من السجلات استناداً إلى التحديد. على سبيل المثال، يمكنك التحكم في أي السجلات يتم عرضها في نموذج Customers "العملاء"، استناداً إلى أي من الخيارات تم تحديدها في مجموعة خيارات Customer Type "نوع العميل".

تعيين قيمة خاصية استجابة إلى حدث
يمكنك تعيين قيمة خاصية استجابة إلي حدث، مثل النقر فوق زر أمر، بواسطة إضافة إجراء SetValue إلي ماكرو أو بواسطة استخدام عبارة تعيين في إجراء Microsoft Visual Basic.
استخدم ماكرو
1. لإنشاء ماكرو، انقر فوق "وحدات الماكرو" أسفل "كائنات"، ثم انقر فوق الزر "جديد" على شريط أدوات إطار قاعدة البيانات.
2. في صف إجراء فارغاً، انقر فوق SetValue في قائمة الإجراءات.
3. قم بتعيين الوسيطة Item إلي المعرف للخاصية التي تريد تعيين قيمتها، ثم قم بتعيين الوسيطة Expression إلي القيمة التي تريد تعيينها إلي الخاصية.
4. انقر فوق حفظ لحفظ الماكرو.
5. انتقل إلي النموذج أو التقرير، افتح صفحة الخصائص للكائن الذي يقوم بتشغيل الماكرو، وقم بتعيين خاصية الحدث إلي اسم الماكرو.
استخدم التعليمات البرمجية لـ Visual Basic
1. لفتح إجراء الحدث للحدث المناسب، قم بفتح النموذج في طريقة العرض "تصميم".
2. قم بعرض صفحة الخصائص للنموذج ثم انقر فوق علامة التبويب "حدث".
3. انقر فوق خاصية حدث للحدث الذي تريد تشغيل الإجراء له.
على سبيل المثال، للاستجابة إلى نقر الماوس على زر أمر، قم بفتح إجراء الحدث للزر "عند النقر".
4. انقر فوق "إنشاء" بجوار مربع الخصائص لعرض مربع الحوار "اختيار المنشئ".
5. انقر نقراً مزدوجاً فوق "منشئ البرامج" لعرض إطار إجراء الحدث.
6. قم بإضافة عبارة التعيين إلي الإجراء بواسطة كتابة المعرف للخاصية التي تريد تعيين قيمتها، وعلامة تساوى (=)، والقيمة التي تريد تعيينها.
7. قم بأحد الإجراءات التالية:
للاشارة إلي خاصية عنصر_التحكم في النموذج الحالي، اكتب الكلمة الأساسية Me متبوعة بعامل التشغيل ! ، واسم عنصر التحكم . (نقطة)، واسم الخاصية. على سبيل المثال، تُعيين العبارة التالية القيمة "خاطئة" إلى الخاصية "مرئي" لعنصر التحكم DateDue في النموذج الحالي
Me![DateDue].Visible = False

للاشارة إلي خاصية عنصر تحكم في نموذج مختلف، اكتب المعرف الكامل لعنصر التحكم. على سبيل المثال، يشير المعرف التالي إلي الخاصية "مرئي" لعنصر التحكم DateDue في النموذج ShipForm "نموذج شحن":
Forms![ShipForm]![DateDue].Visible

مثال على تعيين قيمة لخاصية كاستجابة لحدث
يمكنك تعيين قيمة خاصية استناداً إلى قيمة موجودة في السجل الحالي بواسطة تشغيل ماكرو أو إجراء حدث كاستجابة إلى حدث النموذج الحالي. على سبيل المثال، قد تحتاج إلى إخفاء عنصر التحكم DateDue "تاريخ الاستحقاق" في نموذج Orders "الطلبات" إذا تم دفع المبلغ المستحق للطلبات مسبقاً (إذا كانت قيمة عنصر تحكم Paid "المدفوع" هي Yes "نعم" أو "True" صواب).
لتشغيل ماكرو، قم بتعيين خاصية الحدث عند_الحالي للنموذج إلى اسم الماكرو (HideDateDue) الذي يقوم بتعيين الخاصية مرئي لعنصر تحكم DateDue "تاريخ الاستحقاق" له إلى لا إذا كانت قيمة عنصر التحكم دفع هي "نعم".
Posted Image
1. إذا كانت قيمة عنصر تحكم "المدفوع" هي "نعم" ...
2. ... يقوم الماكرو بتعيين الخاصية مرئي لعنصر التحكم "تاريخ الاستحقاق" إلى لا.
لاستخدام إجراء حدث، أضف تعليمة Microsoft Visual Baic البرمجية التالية إلى إجراء الحدث Form_Current:
If Me![Paid] = True Then
    Me![DateDue].Visible = False
Else
    Me![DateDue].Visible = True
End If

ترتيب الأحداث لكائنات قاعدة البيانات
قد يؤدي حدث واحد، مثل الانتقال من عنصر تحكم إلى آخر، إلى تشغيل العديد من الأحداث المختلفة، التي تحدث في تسلسل معين. إن معرفة وقت إجراء الأحداث وبأي ترتيب يعد شئ هاماً حيث أنه قد يؤثر على كيفية تشغيل وحدات الماكرو أو إجراءات الأحداث. على سبيل المثال، إذا كان لديك إجرائي حدث يتم تشغيلهما بترتيب معين، فقد تريد التأكد من أن الاحداث المصاحبة لهما تحدث بنفس الترتيب.
ترتيب الأحداث لعناصر التحكم في النماذج
تقع أحداث لعناصر التحكم في النماذج عند نقل التركيز إلى عنصر تحكم، وعند تغيير البيانات وتحديثها في عنصر تحكم.
نقل التركيز إلى عنصر تحكم
عند نقل التركيز إلى عنصر تحكم في النموذج— على سبيل المثال، بواسطة فتح نموذج به عنصر تحكم واحد نشط أو أكثر أو بالانتقال إلى عنصر تحكم آخر موجود في نفس النموذج— يتم إجراء الحدثين Enter وGotFocus بهذا الترتيب:
Enter → GotFocus
في حالة فتح نموذج، يتم إجراء تلك الأحداث بعد الأحداث المصاحبة لفتح النموذج (مثل Open وActivate وCurrent)، كالتالي :
Open (نموذج) → Activate (نموذج) → Current (نموذج) → Enter (عنصر تحكم) → GotFocus (عنصر تحكم)
عند ترك التركيز لعنصر تحكم في النموذج— على سبيل المثال، عند إغلاق نموذج به عنصر تحكم واحد نشط أو أكثر أو نقله إلى عنصر تحكم آخر موجود في نفس النموذج— يقع الحدثين Exit وLostFocu بهذا الترتيب:
Exit → LostFocus
عند إغلاق النموذج، يقع الحدثين Exit وLostFocus قبل الأحداث المصاحبة لإغلاق النموذج (مثل Unload وDeactivate وClose)، كالآتي:
Exit (عنصر تحكم) → LostFocus (عنصر تحكم) → Unload (نموذج) → Deactivate (نموذج) → Close (نموذج)
تغيير البيانات وتحديثها في عنصر تحكم
عند إدخال بيانات أو تعديلها في عنصر تحكم موجود في نموذج ثم نقل التركيز إلى عنصر تحكم آخر، يقع الحدثين BeforeUpdate وAfterUpdate:
BeforeUpdate → AfterUpdate
يقع الحدثين Exit و LostFocus لعنصر التحكم المتغير بعد الحدثين BeforeUpdate و AfterUpdate :
BeforeUpdate → AfterUpdate → Exit → LostFocus
يقع الحدث Change عند تغير نصاً في مربع نص أو في جزء من مربع نص لمربع تحرير وسرد. يقع الحدث في أي وقت يتم فيه تغيير محتويات عنصر التحكم، ولكن قبل الانتقال إلى عنصر تحكم أو سجل مختلف (أي قبل وقوع الحدثين BeforeUpdate وAfterUpdate). يحدث تسلسل الأحداث التالي لكل مفتاح يتم الضغط عليه في مربع نص أو في جزء من مربع النص لمربع التحرير والسرد:
KeyDown → KeyPress → Dirty → Change → KeyUp
يقع الحدث NotInList بعد إدخال القيمة في مربع التحرير والسرد غير موجودة في قائمة مربع التحرير والسرد ثم محاولة نقلها إلى عنصر تحكم أو سجل آخر. يتم إجراء الحدث NotInList بعد أحداث لوحة المفاتيح وأحداث Change لمربع التحرير والسرد، ولكن قبل أي حدث لعنصر تحكم أو سجل آخر. في حالة تعيين الخاصية التزام_بالقائمة لمربع التحرير والسرد إلى نعم، يتم إجراء الحدث Error للنموذج فوراً بعد الحدث NotInList:
KeyDown → KeyPress → Dirty → Change → KeyUp → NotInList → Error
ترتيب الأحداث للسجلات في النماذج
تقع الأحداث للسجلات في النماذج عند نقل التركيز إلى سجل أو تحديث البيانات في سجل أو حذف سجل أو سجلات موجودة أو إنشاء سجل جديد.
نقل التركيز للسجلات وتحديث البيانات في السجلات
عند نقل التركيز لسجل موجود في النموذج أو إدخال البيانات أو تغييرها في السجل، ثم نقل التركيز إلى سجل آخر، يتم إجراء التسلسل التالي من الأحداث للنموذج:
Current (نموذج) → BeforeUpdate (نموذج) → AfterUpdate (نموذج) → Current (نموذج)
عند ترك السجل الذي تم تغيير بياناته، ولكن قبل إدخال السجل التالي، يقع الحدثين Exit وLostFocus لعنصر التحكم مع وجود التركيز. يقع الحدثين بعد إجراء BeforeUpdate وAfterUpdate للنموذج كالآتي:
BeforeUpdate (نموذج) → AfterUpdate (نموذج) → Exit (عنصر التحكم) → LostFocus (عنصر التحكم) → RecordExit (نموذج) → Current (نموذج)
عند نقل التركيز في عناصر التحكم الموجودة في النموذج، يتم إجراء الأحداث لكل عنصر تحكم. على سبيل المثال، يتم إجراء التسلسل التالي من الأحداث عند:
• فتح نموذج وتغيير البيانات في عنصر التحكم:
Current (نموذج) → Enter (عنصر تحكم) → GotFocus (عنصر تحكم) → BeforeUpdate (عنصر تحكم) → AfterUpdate (عنصر تحكم)
• نقل التركيز إلى عنصر تحكم آخر:
Exit (عنصر تحكم 1) → LostFocus (عنصر تحكم 1) → Enter (عنصر تحكم 2) → GotFocus (عنصر تحكم 2)
• نقل التركيز إلى سجل آخر:
BeforeUpdate (نموذج) → AfterUpdate (نموذج) → Exit (عنصر تحكم 2) → LostFocus (عنصر تحكم 2) → RecordExit (نموذج) → Current (نموذج)
حذف سجلات
عند حذف سجل، يتم إجراء التسلسل التالي من الأحداث للنموذج، ويعرض Microsoft Access مربع حوار يطالب بتأكيد الحذف:
Delete → BeforeDelConfirm → AfterDelConfirm
في حالة إلغاء الحدث Delete، لن يتم إجراء الحدثين BeforeDelConfirm وAfterDelConfirm ولن يتم عرض مربع الحوار.
إنشاء سجل جديد
عند نقل التركيز إلى سجل جديد (فارغ) في نموذج ثم إنشاء سجل جديد بواسطة الكتابة في عنصر تحكم، يقع التسلسل التالي من الأحداث:
Current (نموذج) → Enter (عنصر تحكم) → GotFocus (عنصر تحكم) → BeforeInsert (نموذج) → AfterInsert (نموذج)
يقع الحدثين BeforeUpdate و AfterUpdate لعناصر التحكم في النموذج وكذلك للسجل الجديد بعد إجراء الحدث BeforeInsert وبعد إجراء الحدث AfterInsert.
ترتيب الأحداث للنماذج والنماذج الفرعية
تقع الأحداث للنماذج عندما تفتح أحد النماذج أو تقوم بإغلاقها أو عند التنقل بين النماذج أو العمل مع البيانات في النماذج.
فتح نموذج وإغلاقه
عند فتح أحد النماذج، يحدث التسلسل التالي من الأحداث في النموذج:
Open → Load → Resize → Activate → Current
في حالة عدم وجود عناصر تحكم غير نشطة في النموذج، يقع الحدث GotFocus للنموذج بعد الحدث Activate ولكن قبل الحدث Current.
عند إغلاق أحد النماذج، يحدث التسلسل التالي من الأحداث في النموذج:
Unload → Deactivate → Close
في حالة عدم وجود عناصر تحكم نشطة في النموذج، يقع الحدث LostFocus للنموذج بعد الحدث Unload ولكن قبل الحدث Deactivate.
التنقل بين النماذج
عند التبديل بين نموذجين مفتوحين، يقع الحدث Deactivate للنموذج الأول، ويقع الحدث Activate للنموذج الثاني:
Deactivate (نموذج 1) → Activate (بموذج 2)
يقع الحدث Deactivate أيضاً للنموذج عند التبديل من النموذج إلى إطار آخر في Microsoft Access. وعلى الرغم من ذلك، لا يتم إجراء الحدث Deactivate عند التبديل إلى مربع حوار أو إلى نموذج تم تعيين خاصيته منبثق إلى نعم أو إلى إطار في تطبيق آخر.
ملاحظة ا يقع الحدث open في حالة الانتقال إلى نموذج مفتوح مسبقاً، حتى في حالة الانتقال إلى النموذج بواسطة تنفيذ الإجراء OpenForm.
العمل مع البيانات في نموذج
يتم إجراء أحداث النماذج وعناصر التحكم عند التنقل بين السجلات في النموذج وتغيير البيانات. على سبيل المثال، عند فتح النموذج لأول مرة، يتم إجراء التسلسل التالي من الأحداث:
Open (نموذج) → Load (نموذج) → Resize (نموذج) → Activate (نموذج) → Current (نموذج) → Enter (عنصر تحكم) → GotFocus (عنصر تحكم)
وكذلك، عند إغلاق أحد النماذج يحدث التسلسل التالي للأحداث:
Exit (عنصر تحكم) → LostFocus (عنصر تحكم) → Unload (نموذج) → Deactivate (نموذج) → Close (نموذج)
في حالة تغيير بيانات في أحد عناصر التحكم يتم إجراء الحدثان BeforeUpdate وAfterUpdate لكل من عنصر التحكم والنموذج وذلك قبل أن يقع الحدث Exit لعنصر التحكم.
العمل مع النماذج الفرعية
عند فتح نموذج يحتوي على نموذج فرعي، يتم تحميل النموذج الفرعي وسجلاته قبل النموذج الرئيسي. ولهذا، تقع الأحداث للنماذج الفرعية وعناصر التحكم الخاصة بها (مثل Open وCurrent وEnter وGotFocus) قبل أحداث النموذج. لا يقع الحدث Activate للنماذج الفرعية ومع ذلك فإن فتح النموذج الرئيسي يؤدي إلى تشغيل الحدث Activate للنموذج الرئيسي فقط.
كذلك عند إغلاق نموذج يحتوي على نموذج فرعي، يتم إلغاء تحميل النموذج الفرعي وسجلاته بعد النموذج. لا يقع الحدث Deactivate للنماذج الفرعية وبهذا يؤدي إغلاق النموذج الرئيسي إلى تشغيل الحدث Deactivate للنموذج الرئيسي فقط. يقع الأحداث لعناصر التحكم والنماذج والنماذج الفرعية بالترتيب التالي:
1. أحداث عناصر تحكم النموذج الفرعي (مثل Exit وLostFocus)
2. أحداث عناصر تحكم النموذج (بما فيها عنصر تحكم النموذج الفرعي)
3. أحداث النموذج (مثل Deactivate وClose)
4. أحداث للنموذج الفرعي
ملاحظة بسبب إجراء أحداث النموذج الفرعي بعد إغلاق النموذج الرئيسي، لن تقع أحداث معينة مثل إلغاء إغلاق النموذج الرئيسي من حدث موجود في النموذج الفرعي. قد تحتاج إلى نقل أنواع التحقق من الصحة هذه إلى حدث في النموذج الرئيسي.
ترتيب أحداث ضغط المفاتيح ونقر الماوس
تقع أحداث لوحة المفاتيح للنماذج وعناصر التحكم عند الضغط على المفاتيح أو إرسال ضغط المفاتيح أثناء وجود تركيز للنموذج أو عناصر التحكم. تقع أحداث الماوس للنماذج ومقاطع النماذج وعناصر التحكم في النماذج عند الضغط على أزرار الماوس وذلك عند وضع مؤشر الماوس على النموذج أو المقطع أو عنصر التحكم أو عند نقل مؤشر الماوس فوق النموذج أو المقطع أو عنصر التحكم.
أحداث لوحة المفاتيح
عند الضغط على المفتاح وتحريره في حالة وجود التركيز في عنصر تحكم في نموذج (أو استخدام الإجراء SendKeys أو عبارة لإرسال ضغطة مفتاح)، يحدث التسلسل التالي للأحداث:
KeyDown → KeyPress → KeyUp
عند الضغط على مفتاح وتحريره أو عند إرسال ضغط مفتاح من مفاتيح مجموعة أحرف ANSI ، تقع كافة الأحداث KeyDown وKeyPress وKeyUp. في حالة الضغط باستمرار على مفتاح ANSI يتم التبديل بين الحدثين KeyDown و KeyPress بشكل متكرر (KeyDown وKeyPress وKeyDown وKeyPress وهكذا) حتى يتم تحرير المفتاح وبهذا يمكن وقوع الحدث KeyUp.
عند الضغط على مفتاح ليس في مجموعة ANSI وتحريره، يقع حدثا KeyDown وKeyUP. في حالة الضغط باستمرار على مفتاح ليس في مجموعة مفاتيح ANSI، يقع الحدث KeyDown بشكل متكرر وذلك حتى يتم تحرير المفتاح؛ ثم يقع الحدث KeyUp.
إذا كان الضغط على المفتاح يؤدي إلى تشغيل حدث آخر لعنصر التحكم، يقع الحدث الآخر بعد الحدث KeyPress ولكن قبل الحدث KeyUp. على سبيل المثال، إذا أدى ضغط مفتاح إلى تغيير النص الموجود في مربع النص، وتشغيل الحدث Change، يتم حدوث التسلسل التالي من الأحداث:
KeyDown → KeyPress → Change → KeyUp
إذا أدى ضغط مفتاح إلى نقل التركيز من عنصر تحكم إلى آخر، يتم إجراء الحدث KeyDown لعنصر التحكم الأول وذلك اثناء إجراء حدثي KeyPress وKeyUp لعنصر التحكم الثاني. على سبيل المثال، إذا قمت بتغيير بيانات في عنصر تحكم ثم قمت بالضغط على المفتاح TAB للانتقال إلى عنصر التحكم التالي، يحدث التسلسل التالي من الإجراءات:
• عنصر التحكم الأول:
KeyDown → BeforeUpdate → AfterUpdate → Exit → LostFocus
• عنصر التحكم الثاني:
Enter → GotFocus → KeyPress → KeyUp
أحداث الماوس
عند الضغط على مفتاح الماوس وتحريره أثناء وجود مؤشر الماوس على عنصر تحكم في نموذج، يتم حدوث التسلسل التالي من الأحداث لعناصر التحكم:
MouseDown → MouseUp → Click
في حالة وجود تركيز لعنصر التحكم وقمت بالنقر فوق عنصر تحكم آخر لنقل التركيز إليه، يتم حدوث التسلسل التالي من الأحداث:
• عنصر التحكم الأول:
Exit → LostFocus
• عنصر التحكم الثاني:
Enter → GotFocus → MouseDown → MouseUp → Click
في حالة الانتقال إلى سجل آخر ثم النقر فوق عنصر تحكم، يتم إجراء الحدث Current قبل الحدث Event لعنصر التحكم.
يؤدي النقر المزدوج فوق عنصر التحكم إلى وقوع الحدثين DbIClick وClick. على سبيل المثال، عند النقر المزدوج فوق عنصر تحكم خلاف زر الأمر، يتم حدوث التسلسل التالي من الأحداث:
MouseDown → MouseUp → Click → DblClick → MouseUp
عند النقر المزدوج فوق زر الأمر، يتم إجراء تلك الأحداث يعقبها حدث Click الثاني.
يتم إجراء الحدث MouseMove للنموذج أو المقطع أو عنصر التحكم عند نقل مؤشر الماوس فوق النموذج أو المقطع أو عنصر التحكم. هذا الإجراء مستقل عن أحداث الماوس الأخرى.
ترتيب الأحداث للتقارير ومقاطع التقارير
يتم إجراء الأحداث للتقارير ومقاطع التقارير عند فتح التقرير لطباعته أو معاينته قبل الطباعة أو إغلاقه.
أحداث التقارير
عند فتح تقرير لطباعته أو معاينته قبل الطباعة ثم إغلاقه في وقت لاحق أو الانتقال إلى إطار آخر في Microsoft Access، يتم إجراء التسلسل التالي من الأحداث للتقرير:
Open → Activate → Close → Deactivate
عند التبديل بين تقريرين مفتوحين، يتم إجراء الحدث Deactivate للتقرير الأول، كما يتم إجراء الحدث Activate للتقرير الثاني:
Deactivate (تقرير 1) → Activate (تقرير2)
يتم إجراء الحدث Deactivate أيضاً للتقرير عند التبديل من التقرير إلى إطار آخر في Access. وعلى الرغم من ذلك، لا يتم إجراء الحدث Deactivate عند التبديل إلى مربع الحوار أو إلى نموذج يتضمن الخاصية منبثق تم تعينها إلى نعم أو إلى إطار في تطبيق آخر.
عند فتح تقرير يستند إلى استعلام، يقوم Access بتشغيل الحدث Open قبل تشغيل الاستعلام المصدر. وبهذا، يمكن تعيين معايير للتقرير باستخدام ماكرو أو إجراء حدث يستجيب إلى الحدث Open. على سبيل المثال، يمكن أن يفتح الماكرو أو إجراء الحدث مربع حوار مخصص يمكن إدخال معايير التقرير فيه.
أحداث لمقاطع التقرير
عند طباعة التقرير أو معاينته قبل الطباعة، يقع الحدثين Format و Print لمقاطع التقرير وذلك بعد إجراء الحدثين Open و Activate للتقرير وقبل إجراء الحدثين Close أو Deactivate للتقرير:
Open (تقرير) → Activate (تقرير) → Format (مقطع التقرير) → Print (مقطع التقرير) → Close (تقرير) → Deactivate (تقرير)
بالإضافة إلى ذلك، يمكن إجراء الأحداث التالية أثناء التنسيق أو بعده ولكن قبل إجراء الحدث Print:
• يتم إجراء الحدث Retreat عند رجوع Access إلى مقطع سابق وذلك أثناء تنسيق التقرير.
• يتم إجراء الحدث NoData في حالة عدم عرض التقرير للسجلات.
• يتم إجراء الحدث Page بعد التنسيق ولكن قبل الطباعة. يمكن استخدام هذا الحدث من أجل تخصيص شكل التقرير المطبوع.

تم الانتهاء من الموضوع والى لقاء متجدد في مواضيع قادمه
الموضوع القادم
المفاهيم الاساسية للبرمجة
اختكم
زهره