يمكن أن يؤدي إجراء واحد، مثل الانتقال من عنصر تحكم واحد على عنصر إلى عنصر تحكم آخر، إلى تشغيل عدة أحداث مختلفة، والتي تحدث في تسلسل معين. تعتبر معرفة وقت وقوع الأحداث والترتيب الذي تحدث فيه أمراً مهماً، لأنه قد يؤثر على كيفية تشغيل وحدات الماكرو أو إجراءات الأحداث ووقت تشغيلها. على سبيل المثال، إذا كان هناك إجراءين من الأحداث سيتم تشغيلهما في ترتيب معين، فستحتاج إلى التأكد من أن الأحداث المقترنة بهما تحدث في ذلك الترتيب نفسه.
في هذه المقالة
- ترتيب الأحداث لعناصر التحكم في النماذج
- ترتيب الأحداث للسجلات في النماذج
- ترتيب الأحداث للنماذج والنماذج الفرعية
- ترتيب الأحداث لضغطات المفاتيح ونقرات الماوس
- ترتيب الأحداث للتقارير ومقاطع التقارير
ترتيب الأحداث لعناصر التحكم في النماذج
تحدث الأحداث لعناصر التحكم في النماذج عند نقل التركيز إلى عنصر تحكم، وعند تغيير البيانات وتحديثها في عنصر تحكم.
ملاحظة
يعرض Microsoft Office Access أسماء الحدث بشكل مختلف قليلاً في "محرر Visual Basic" عن طريقة عرضها في صفحة الخصائص ومنشئ الماكرو. على سبيل المثال، الحدث المسمى بـ On Got Focus في صفحة خصائص النموذج وفي "منشئ الماكرو" يسمى بـ GotFocus في "محرر Visual Basic". تستخدم الأمثلة في هذه المقالة تنسيق Visual Basic for Applications (VBA) لأسماء الحدث.
نقل التركيز إلى عنصر تحكم
عند نقل التركيز إلى عنصر تحكم في نموذج (على سبيل المثال، من خلال فتح نموذج يحتوي على عنصر تحكم نشط واحد أو أكثر، أو من خلال نقل التركيز إلى عنصر تحكم آخر في النموذج نفسه)، يقع الحدثان Enter وGotFocus في الترتيب التالي:
أدخل
GotFocus
عند فتح نموذج، يقع الحدثان Enter وGotFocus بعد الأحداث المقترنة بفتح النموذج (على سبيل المثال فتح وتنشيط وحالي)، كما يلي:
فتح (نموذج) تنشيط (نموذج)
الحالي (نموذج)
Enter (عنصر
GotFocus (عنصر تحكم)
عندما ينتقل التركيز من عنصر تحكم في نموذج (على سبيل المثال، عند إغلاق نموذج يحتوي على عنصر تحكم نشط واحد أو أكثر، أو عند الانتقال إلى عنصر تحكم آخر في النموذج نفسه)، يقع الحدثان Exit وLostFocus بالترتيب التالي:
الخروجLostFocus
عند إغلاق نموذج، يقع الحدثان Exit وLostFocus قبل الأحداث المقترنة بإغلاق النموذج (مثل تحميل وإلغاء تنشيط وإغلاق)، كما يلي:
سهم خروج (عنصر تحكم)
LostFocus (عنصر تحكم)
إلغاء التحميل (نموذج)
إلغاء تنشيط (نموذج)
إغلاق (نموذج)
تغيير البيانات وتحديثها في عنصر تحكم
عند إدخال البيانات أو تغييرها في عنصر تحكم في نموذج ما ثم نقل التركيز إلى عنصر تحكم آخر، تقع الأحداث BeforeUpdate وAfterUpdate:
BeforeUpdateAfterUpdate
يقع الحدثان Exit وLostFocus لعنصر تحكم تتغير قيمته بعد الحدثين BeforeUpdate وAfterUpdate:
سهم BeforeUpdate
AfterUpdate
إنهاء
LostFocus
عندما تقوم بتغيير النص في مربع نص أو في مقطع مربع النص من مربع تحرير وسرد، يقع الحدث Change. يقع هذا الحدث عندما يتم تغيير محتويات عنصر التحكم، ولكن قبل نقل التركيز إلى سجل أو عنصر تحكم مختلف (وذلك قبل وقوع الحدثين BeforeUpdate وAfterUpdate). يحدث التسلسل التالي من الأحداث لكل مفتاح تضغط عليه في مربع نص أو في مقطع مربع النص من مربع تحرير وسرد:
KeyDownKeyPress
القذرتغيير
السهم KeyUp
يقع الحدث NotInList بعد إدخال قيمة في مربع تحرير وسرد لم يتم العثور عليها في قائمة مربع التحرير والسرد، ثم تتم محاولة نقل التركيز إلى سجل أو عنصر تحكم آخر. يقع الحدث NotInList بعد أحداث لوحة المفاتيح وأحداث Change لمربع التحرير والسرد، ولكن قبل أحداث أي عنصر تحكم آخر أو النموذج. إذا تم تعيين الخاصية LimitToList لمربع التحرير والسرد إلى نعم، يقع حدث الخطأ للنموذج مباشرة بعد الحدث NotInList :
KeyDownKeyPress
متسخ
تغيير
KeyUp
NotInList
خطأ
ترتيب الأحداث للسجلات في النماذج
تحدث الأحداث للسجلات الموجودة في النماذج عند نقل التركيز إلى سجل مختلف أو تحديث البيانات في سجل أو حذف سجل أو سجلات موجودة أو إنشاء سجل جديد.
نقل التركيز إلى السجلات وتحديث البيانات في السجلات
عند نقل التركيز إلى سجل موجود في نموذج ما، أدخل البيانات الموجودة في السجل أو قم بتغييرها، ثم انقل التركيز إلى سجل آخر، يحدث التسلسل التالي من الأحداث للنموذج:
(نموذج) حالي
BeforeUpdate (نموذج)
AfterUpdate (نموذج) الحالي (نموذج)
عندما تغادر السجل الذي تم تغيير بياناته، ولكن قبل دخول السجل التالي، يقع الحدثان Exit وLostFocus لعنصر التحكم الذي يحتوي على التركيز. تقع هذه الأحداث بعد الحدثين BeforeUpdate وAfterUpdate للنموذج، كما يلي:
سهم BeforeUpdate (نموذج)
AfterUpdate (
خروج (عنصر تحكم)
LostFocus (عنصر تحكم)
الحالي (نموذج)
أثناء نقل التركيز بين عناصر التحكم الموجودة في نموذج ما، تقع الأحداث لكل عنصر تحكم. على سبيل المثال، يحدث التسلسل التالي من الأحداث عند إجراء ما يلي:
- فتح نموذج وتغيير البيانات في عنصر تحكم:
(نموذج) الحاليأدخل (عنصر تحكم)
GotFocus (عنصر تحكم)
BeforeUpdate (
عنصر تحكم) بعد التحديث (عنصر تحكم) - نقل التركيز إلى عنصر تحكم آخر:
Exit (control1) LostFocus (control1)
Enter (control2
GotFocus (control2) - نقل التركيز إلى سجل آخر:
سهم BeforeUpdate (نموذج)
AfterUpdate (نموذج)
Exit (control2
LostFocus (control2)
Current (form)
حذف السجلات
عندما تقوم بحذف سجل، تقع الأحداث التالية للنموذج، ويعرض Microsoft Office Access مربع حوار يطالبك بتأكيد الحذف:
حذف
BeforeDelConfirm
AfterDelConfirm
إذا قمت بإلغاء الحدث Delete، فلا يقع الحدثان BeforeDelConfirm وAfterDelConfirm ولا يتم عرض مربع الحوار.
إنشاء سجل جديد
عند نقل التركيز إلى سجل (فارغ) جديد في نموذج ما ثم إنشاء سجل جديد عن طريق كتابة البيانات في عنصر تحكم، يحدث التسلسل التالي من الأحداث:
(نموذج) الحاليأدخل (عنصر تحكم)
GotFocus (عنصر تحكم)
BeforeInsert (
النموذج) بعدInsert (نموذج)
يتم تشغيل الحدث BeforeInsert (النموذج) بمجرد بدء الكتابة في عنصر التحكم. يتم تشغيل الحدث AfterInsert (النموذج) بعد مغادرة السجل.
يقع الحدثان BeforeUpdate وAfterUpdate لعناصر التحكم الموجودة في النموذج وللسجل الجديد بعد الحدث BeforeInsert وقبل الحدث AfterInsert.
ترتيب الأحداث للنماذج والنماذج الفرعية
تقع الأحداث للنماذج عند فتح نموذج أو إغلاقه أو التنقل بين النماذج أو العمل على البيانات في نموذج أو نموذج فرعي.
فتح نموذج وإغلاقه
عند فتح نموذج، يحدث التسلسل التالي من الأحداث للنموذج:
فتح
تحميلتغيير حجم السهم
تنشيط
الحالي
إذا لم يكن هناك عناصر تحكم نشطة في النموذج، يقع الحدث GotFocus للنموذج بعد الحدث تنشيط ولكن قبل الحدث حالي.
عند إغلاق نموذج، يحدث التسلسل التالي من الأحداث للنموذج:
إلغاء تحميل
إلغاء تنشيط
إغلاق
إذا لم تكن هناك عناصر تحكم نشطة في النموذج، يقع الحدث LostFocus للنموذج بعد حدث إلغاء التحميل ولكن قبل الحدث إلغاء التنشيط .
التنقل بين النماذج
عند التبديل بين نموذجين مفتوحين، يقع الحدث إلغاء تنشيط للنموذج الأول، والحدث تنشيط للنموذج الثاني:
إلغاء تنشيط (نموذج1)
تنشيط (نموذج2)
يقع أيضاً الحدث إلغاء تنشيط لنموذج ما عند التبديل من النموذج إلى علامة تبويب عنصر آخر في Access. على الرغم من ذلك، لا يقع الحدث إلغاء التنشيط عند التبديل إلى مربع حوار أو إلى نموذج يتم تعيين خاصيته منبثق إلى نعم أو إلى نافذة في برنامج آخر.
ملاحظة
لا يقع الحدث فتح إذا قمت بنقل التركيز إلى نموذج مفتوح بالفعل، حتى إذا قمت بنقل التركيز إلى ذلك النموذج من خلال تنفيذ الإجراء OpenForm.
العمل على البيانات في نموذج ما
تقع أحداث النماذج وعناصر التحكم عند التنقل بين السجلات في النموذج وعند تغيير البيانات. على سبيل المثال، عند فتح نموذج لأول مرة، يحدث التسلسل التالي من الأحداث:
سهم فتح (نموذج)
تحميل (نموذج)
تغيير حجم (نموذج)
تنشيط (نموذج)
الحالي (نموذج)
أدخل (عنصر تحكم)
GotFocus (عنصر تحكم)
وبالمثل، عند إغلاق نموذج، يحدث التسلسل التالي من الأحداث:
سهم خروج (عنصر تحكم)
LostFocus (عنصر تحكم)
إلغاء التحميل (نموذج)
إلغاء تنشيط (نموذج)
إغلاق (نموذج)
إذا قمت بتغيير البيانات في عنصر تحكم، يقع الحدثان BeforeUpdate وAfterUpdate لكل من عنصر التحكم والنموذج قبل الحدث Exit لعنصر التحكم.
العمل باستخدام النماذج الفرعية
عند فتح نموذج يحتوي على نموذج فرعي، يتم تحميل النموذج الفرعي وسجلاته قبل النموذج الرئيسي. وبالتالي، تقع أحداث النموذج الفرعي وعناصر التحكم الخاصة به (مثل Open وCurrent وEnter وGotFocus) قبل أحداث النموذج. على الرغم من ذلك، لا يقع الحدث تنشيط للنماذج الفرعية. وبالتالي، يؤدي فتح نموذج رئيسي إلى تشغيل حدث تنشيط للنموذج الرئيسي فقط.
وبشكل مماثل، عند إغلاق نموذج يحتوي على نموذج فرعي، يتم تحميل النموذج الفرعي وسجلاته بعد النموذج. لا يقع الحدث إلغاء التنشيط للنماذج الفرعية. وبالتالي، يؤدي إغلاق نموذج رئيسي إلى تشغيل حدث إلغاء تنشيط للنموذج الرئيسي فقط. تقع الأحداث لعناصر التحكم والنموذج والنموذج الفرعي في الترتيب التالي:
- أحداث عناصر تحكم النموذج الفرعي (مثل Exit وLostFocus)
- أحداث عناصر تحكم النموذج (بما في ذلك عنصر تحكم النموذج فرعي)
- أحداث النموذج (مثل إلغاء التنشيط وإغلاق)
- أحداث النموذج الفرعي
ملاحظة
نظراً لوقوع الأحداث لنموذج فرعي بعد إغلاق النموذج الرئيسي، لن تقع أحداث معينة، مثل إلغاء عملية إغلاق النموذج الرئيسي من حدث في النموذج الفرعي. قد تحتاج إلى نقل هذه الأنواع من اختبارات التحقق من الصحة إلى حدث في النموذج الرئيسي.
ترتيب الأحداث لضغطات المفاتيح ونقرات الماوس
تحدث أحداث لوحة المفاتيح للنماذج وعناصر التحكم عند الضغط على المفاتيح أو إرسال ضغطات المفاتيح بينما يكون التركيز على النموذج أو عنصر التحكم. تقع أحداث الماوس للنماذج ومقاطع النماذج وعناصر التحكم في النماذج عند النقر فوق أزرار الماوس أثناء وضع مؤشر الماوس على أحد النماذج أو المقاطع أو عناصر التحكم. تقع أيضاً أحداث الماوس عند تحريك مؤشر الماوس فوق أحد النماذج أو المقاطع أو عناصر التحكم.
أحداث لوحة المفاتيح
عند الضغط على مفتاح وتحريره أثناء التركيز على عنصر تحكم في نموذج (أو استخدام الإجراء أو العبارة SendKeys لإرسال ضغطة مفاتيح)، يحدث التسلسل التالي من الأحداث:
KeyDownKeyPress
KeyUp
عند الضغط على مفتاح وتحريره أو إرسال ضغطة مفاتيح في مجموعة أحرف ANSI، تحدث جميع أحداث KeyDownوKeyPressوKeyUp . إذا قمت بالضغط باستمرار على مفتاح ANSI، يتبادل الحدثان KeyDown وKeyPress بشكل متكرر (KeyDown وKeyPress وKeyDown وKeyPress وهكذا) حتى تقوم بتحرير المفتاح؛ ثم يقع الحدث KeyUp.
إذا قمت بالضغط على مفتاح غير ANSI وتحريره، يقع الحدثان KeyDown وKeyUp. إذا قمت بالضغط باستمرار على مفتاح غير ANSI، يقع الحدث KeyDown بشكل متكرر حتى تقوم بتحرير المفتاح، ثم يقع الحدث KeyUp.
إذا كان الضغط على أحد المفاتيح يؤدي إلى تشغيل حدث آخر لعنصر تحكم، يقع هذا الحدث بعد الحدث KeyPress لكن قبل الحدث KeyUp. على سبيل المثال، إذا قامت ضغطة مفتاح بتغيير النص في مربع نص، التي تقوم بتشغيل حدث Change، يحدث التسلسل التالي من الأحداث:
KeyDownKeyPress
تغييرمفتاح السهم
إذا كانت أحد ضغطات المفاتيح تؤدي إلى انتقال التركيز من عنصر تحكم واحد إلى عنصر تحكم آخر، يقع الحدث KeyDown لعنصر التحكم الأول، بينما يقع الحدثان KeyPress وKeyUp لعنصر التحكم الثاني. على سبيل المثال، إذا قمت بتغيير البيانات في عنصر تحكم ثم قمت بالضغط على المفتاح TAB للانتقال إلى عنصر التحكم التالي، يحدث التسلسل التالي من الأحداث:
- عنصر التحكم الأول:
KeyDownقبل
AfterUpdate
إنهاء
LostFocus - عنصر التحكم الثاني:
أدخل
GotFocus
KeyPress
KeyUp
أحداث الماوس
عند النقر فوق أحد أزرار الماوس وتحريره أثناء وضع مؤشر الماوس على عنصر تحكم في نموذج ما، يحدث التسلسل التالي من الأحداث لعنصر التحكم:
الماوس لأسفلالماوس فوق
فوق
إذا كان التركيز على عنصر تحكم ما وقمت بالنقر فوق عنصر تحكم آخر لنقل التركيز إلى عنصر التحكم الثاني هذا، يحدث التسلسل التالي من الأحداث:
- عنصر التحكم الأول:
الخروجLostFocus - عنصر التحكم الثاني:
أدخل
GotFocus
MouseDown
MouseUp
انقر فوق
إذا انتقلت إلى سجل آخر ثم قمت بالنقر فوق عنصر تحكم ما، يقع الحدث Current للنموذج أيضاً قبل الحدث Enter لعنصر التحكم.
يؤدي النقر المزدوج فوق أحد عناصر التحكم إلى وقوع الحدثين Click وDblClick. على سبيل المثال، عندما تنقر نقراً مزدوجاً فوق أحد عناصر التحكم فضلاً عن أحد أزرار الأوامر، يحدث التسلسل التالي من الأحداث لعنصر التحكم:
MouseDownMouseUp
النقر فوق
DblClick
MouseUp
عندما تنقر نقراً مزدوجاً فوق أحد أزرار الأوامر، يحدث التسلسل السابق من الأحداث، متبوعاً بحدث Click ثانٍ.
يقع حدث MouseMove لأحد النماذج أو المقاطع أو عناصر التحكم عند تحريك مؤشر الماوس فوق النموذج أو المقطع أو عنصر التحكم. هذا الحدث مستقل عن أحداث الماوس الأخرى.
ترتيب الأحداث للتقارير ومقاطع التقارير
تقع الأحداث للتقارير ومقاطع التقارير عند فتح تقرير لطباعته أو معاينته أو عند إغلاق تقرير.
الأحداث للتقارير
عندما تفتح تقرير لطباعته أو معاينته ثم لاحقاً تقوم بإغلاق التقرير أو الانتقال إلى علامة تبويب عنصر آخر في Access، يحدث التسلسل التالي من الأحداث للتقرير:
سهم فتح
تحميل
تنشيط
إغلاق
إلغاء التنشيط
عند التبديل بين تقريرين مفتوحين، يقع الحدث إلغاء تنشيط للتقرير الأول، والحدث تنشيط للتقرير الثاني:
إلغاء تنشيط (report1)
Activate (report2)
يقع أيضاً الحدث إلغاء تنشيط لتقرير ما عند التبديل من التقرير إلى علامة تبويب عنصر آخر في Access. على الرغم من ذلك، لا يقع الحدث إلغاء التنشيط عند التبديل إلى مربع حوار أو إلى نموذج يتم تعيين خاصيته منبثق إلى نعم أو إلى نافذة في برنامج آخر.
عند فتح تقرير يستند إلى استعلام، يقوم Access بتشغيل الحدث فتح للتقرير قبل تشغيل الاستعلام الأساسي. كنتيجة لذلك، يمكنك تعيين معايير التقرير باستخدام ماكرو أو إجراء حدث يستجيب للحدث فتح. على سبيل المثال، قد يفتح إجراء الحدث أو الماكرو مربع حوار مخصص تقوم فيه بإدخال معايير التقرير.
الأحداث لمقاطع التقارير
عندما تقوم بطباعة تقرير أو معاينته، يقع الحدثان تنسيق وطباعة لمقاطع التقارير بعد الحدثين فتح وتنشيط للتقرير وقبل أحداث التقرير إغلاق أو إلغاء التنشيط:
سهم فتح (تقرير)
تحميل (تقرير)
تنشيط (تقرير)
تنسيق (قسم التقرير)
طباعة (مقطع التقرير)
إغلاق (تقرير
) إلغاء تنشيط (تقرير)
الامن يمكنك استخدام طريقة عرض التقرير لتمكين تصفية المستخدم للتقارير. ولكن على عكس معاينة الطباعة، لا يحدث الحدثان تنسيقوطباعة في أي قسم في طريقة عرض التقرير. ينطبق هذا أيضا على نتائج دالة VBA والإجراءات المعرفة من قبل المستخدم التي يتم عرضها في عناصر التحكم (مثل التسميات التوضيحية وحالة العرض والتنسيق الشرطي وتغيير حجم عناصر التحكم وما إلى ذلك) داخل تلك الأحداث. لذلك، لا تستخدم التعليمات البرمجية في هذا الحدث لتنسيق البيانات السرية أو إخفائها أو طباعتها، والتي قد تصبح مكشوفة. نوصي بتصفية البيانات مسبقا أو تعطيل معاينة التقرير عن طريق تعيين الخاصية AllowReportView إلى لا.
بالإضافة إلى ذلك، قد تقع الأحداث التالية أثناء أو بعد التنسيق لكن قبل الحدث طباعة:
- يقع الحدث التراجع عند رجوع Access إلى مقطع سابق أثناء تنسيق التقرير.
- يقع الحدث NoData إذا لم يكن هناك أي سجلات معروضة بواسطة التقرير.
- يقع الحدث صفحة بعد التنسيق ولكن قبل الطباعة. يمكنك استخدام هذا الحدث لتخصيص مظهر التقرير المطبوع.