سنشرح الفكرة والأكواد ..
بداية قمت بإنشاء متغيرين في أول الأكواد ، هما :-
Private Const TimeoutMinutes As Integer = 1
قمت بإنشاء متغير ثابت ( Const ) يسمى ( TimeoutMinutes ) ، ويتم تعيين قيمته إلى 1 تعبيراً عن دقيقة واحدة. ( وطبعاً تستطيع تغييره كما تريد )
سنستخدم هذا المتغير لتحديد المدة الزمنية (بالدقائق) التي يجب أن يمر ولا توجد فيها حركة للماوس حتى يتم اعتبار النموذج في وضع الخمول .
Private LastMouseMoveTime As Date
هنا سنقوم بإنشاء متغير خاص (Private) يسمى ( LastMouseMoveTime ) ويتم تحديده كنوع ( Date ) لأنه سيتم تخزين قيمة بصيغة وقت . يُستخدم هذا المتغير لتخزين الوقت الأخير الذي حدثت فيه حركة الماوس على النموذج.
الآن بدأت في حدث عند التحميل لتثبيت قيمتين ، هما :-
أولاً المتغير الخاص لتكون قيمته كمتغير الوقت الذي تم فتح النموذج فيه
LastMouseMoveTime = Now
ثانياً قمت بتشغيل الأمر كل دقيقة بالسطر التالي
Me.TimerInterval = 60000
وفي حدث تحريك الماوس ، قمت بجعله يأخذ قيمة الوقت الحالي مرة أخرى كحدث عند التحميل
LastMouseMoveTime = Now
وفي حدث الوقت سيتم التحقق من أن الماوس لم يتم تحريكه منذ آخر قيمة تم تسجيلها في المتغير آخر حركة للماوس سابقاً ، بالكود التالي
تخطي الخطأ لأنه سيتقوم بمهمة تغيير في النموذج عند مرور الوقت ، فوجب تلافي الخطأ لأنه لن يؤثر على النموذج
On Error Resume Next
سيتم التحقق من آخر مدة زمنية لتحريك الماوس ما إذا تخطيناها أم لا.
If Now - LastMouseMoveTime > TimeValue("00:00:" & TimeoutMinutes * 60) Then
اذا تحقق الشرط وكان الوقت المسجل في المتغير أقل بدقيقة من الوقت الحالي فستظهر رسالة
ولك حرية حذفها بالمهمة التي تريدها .
MsgBox "تم تسجيل الخروج بسبب عدم تحريك الماوس", vbInformation
بعد الرسالة سيتم اغلاق آكسيس . طبعاً تستطيع هنا أن تعدل الأحداث كما ترغب .
DoCmd.Quit
End If