بسم الله الرحمن الرحيم
من أهم وأكثر الأحداث استخدام في الفيجوال بيسك هي أحداث الفأرة. ولذلك أحببت أن أقدم لمحة بسيطة إلى إخواني في المنتدى الذي طالما استفدت وتعلمت منه وأرجو من الله التوفيق.
أولا:أحداث الفأر(mouse events):-
1- Click:-
ينطلق هذا الحدث عند الضغط على زر الفأرة (click) وهو أكثر الأحداث شيوعا.
2-Mousedown:-
ينطلق هذا الحدث أيضا عند الضغط على زر الفأرة.
ولكن هذا الحدث يسبق حدث ال(Click) فأول ما يتم الضغط على الفأرة وقبل أن تطلق الزر يكون هذا الحدث قد تنفد.
ويكون شكل دالة الحدث كالتالي:-
Private Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) End Sub
أما بالنسبة للمتغير(button) فقيمته تحدد أي من الأزرار الثلاثة للماوس هي التي ينطلق عنده الحدث.
فيأخذ المتغير button إحدى القيم التالية :-
أما بالنسبة لل (shift) فقيمته تحدد انه عندما يتم الضغط على زر من لوحة التحكم (shift,ctrl or alt) مع زر الفأرة فأن الحدث ينطلق.
وهذه القيم موضحة بالجدول :
كما انه يوجد علاقة جميلة يمكن استخدامها لتحديد اي ازرار من هذه الازرار الثلاثة نريد الحدث ان ينطلق عند الضغط عليها وهي كالتالي :
من الشكل اعلاه يمن وضع قيمه لكل زر بالعد الثنائي اي (0 او 1 ) وبالتالي اذا كانت قيمة (a) هي (1) فهذا يعني انه فعال اواذا كانت صفر اي انه غير نشط وبالتالي اذا كنت اريد ان يتنفذ الحدث عند الضغط على الزر (alt ) فقط فأنني اضع القيمة استنادا الى الشكل 100 اي 1 لل (a) ال (alt) و (0) لكلا من ال (ctrl and shift)
الجدول التالي يوضح جميع القيم الممكنه :
فيمكن أن ينطلق الحدث مع الضغط على ال shift وزر الماوس إذا كان shift = 1 أو shift = vbshiftmask
أو عند الضغط على shift+ctrl+alt إذا كان shift = 7.
مثال:-
Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Select Case Shift Case 1 Form1.BackColor = vbRed Case 7 Form1.BackColor = vbYellow End Select If Button = 1 Then Form1.BackColor = vbBlue Else Form1.backcolor=vbGreen End If End Sub
بالنسبة لهذا المثال فيحدث تغيير في لون الفورم :
1-عند الضغط على الزر الايسر للفأرة مع زر الshift يتغير لون الفورم الى احمر
2- عند الضغط على الزر الايسر للفأرة مع (alt+ctrl+shift) يتغير لون الفورم الى الاصفر
3- بالنسبة لشرط ال(if) فيحدد الزر الايسر هو الذي ضغط فيتغير لون الفورم الى ازرق اما اذا ضغط زر اخر الايمن او الاوسط فيتغير اللون الى الاخضر لان button=2 or 3 .
أما بالنسبة للمتغيرين X &Y فهي ترجع موقع مؤشر الفأرة.
مثال:-
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Text1.Text = X Text2.Text = Y End sub
3- Mouseup:-
ينطلق هذا الحدث بعد حدث الmousedown (عند ترك المؤشر بعد الضغط).
أما بالنسبة للمتغيرات التي يستخدمها فقد سبق توضيحها في mousedown.
4-Mousemove:-
ينطلق عند البدء في تحريك المؤشر.
مثال على استخدام أحداث الفأرة:-Dim paintnow As Boolean
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) paintnow = True End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) If paintnow Then PSet (X, Y) End If End Sub Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) paintnow = False End Sub
شرح :
عند الضغط على مؤشر الفأرة (أي انطلاق حدث Mousedown فأن قيمة المتغير paintnow =true وبالتالي فأن الشرط الموجود في الحدث Mousemove صحيح وبالتالي يسمح بالرسم على الفورم باستخدام الدالة pset التي تعمل على رسم نقطة في احداتيي المؤشر X & Y وباستمرار الحركة يتم رسم نقاط متواصلة تظهر عل شكل خط.
وعند إطلاق زر المؤشر فأن الحدث Mousedown ينتهي ويبداء حدث ال Mouseup والذي يغير قيمة المتغير paintnow=false وبالتالي فعند تحريك المؤشر حدث ال Mousemove ينطلق ولكن لا يوجد أي شفرة خارج شرط ال (if ) سيتم تنفيذها.
ملاحظة: يمكن زيادة حجم الخط بتغيير قيمة الخاصية drawwidth لل(form) كما يمكن تغيير اللون أيضا.
هكذا يكون انتهى درس أحداث الفأرة.
والسلام عليكم ورحمة الله وبركاته



