Form - Button - PictureBox - Label و هى الأدوات التى سنقوم بتحريكها ان شاء الله , قم الان بفتح شاشة الكود الخاصة بالـ Form1 .......... فى منطقة الـ Public Class Form1 أكتب الكود الاتى :
' These will be our
switches
Dim Go As Boolean
Dim LeftSet As Boolean
Dim TopSet As Boolean
'These will hold the mouse position
Dim HoldLeft As Integer
Dim HoldTop As Integer
' These will hold the offset of the mouse in the element
Dim OffLeft As Integer
Dim OffTop As Integer
Dim Go As Boolean
Dim LeftSet As Boolean
Dim TopSet As Boolean
'These will hold the mouse position
Dim HoldLeft As Integer
Dim HoldTop As Integer
' These will hold the offset of the mouse in the element
Dim OffLeft As Integer
Dim OffTop As Integer
و الكود عباره عن تعريف لبعض المتغيرات التى سنحتاجها و هى تنقسم
الى 3 أقسام :
1) التحويلات
(GO) وظيفته يقوم باخبار
المشروع ما اذا كان الماوس تم الضغط عليه و جارى التحريك أم لا .
(LeftSet) و (TopSet) وظيفتهما هى
معرفة ما اذا تم التعرف على نقطة بداية التحريك أم لا .
الأن نريد ضبط التحويلات بمعنى أننا سنقوم بجعل القيمه
العادية لها OFF أى فى حالة MouseUp أى اننا اذا لم نكن فى
وضع الضغط على الأداه , اذا نحن لا نحركها الأن .
فى نفس المنطقه قم بكتاية الكود الأتى :
Private Sub
Obj_MouseUp(ByVal sender As Object, ByVal e As
System.Windows.Forms.MouseEventArgs) Handles Obj.MouseUp
Go = False
LeftSet = False
TopSet = False
End Sub
LeftSet = False
TopSet = False
End Sub
و متى يعرف البرنامج اننا سنقوم بتحريك الماوس ؟ عندما يكون MousePress او
بمعنى عندما نقوم بعمل Click و بالتالى سنقوم
باعلام البرنامج بعكس ما فى الاجراء السابق و لكن للمتغير GO فقط
لأن هذه هى وظيفته .
فى نفس المنطقه قم كتابة الكود الأتى :
Private Sub
Obj_MouseDown(ByVal sender As Object, ByVal e As
System.Windows.Forms.MouseEventArgs) Handles Obj.MouseDown
Go = True
End Sub
الان البرنامج يعرف متى يكون الماوس فى حالة Click أم لا
و نريد أن تتبع حركة الماوس أثناء الـ Click الاداه
المراد تحريكها ..... ستشرح بالتفصيل لاحقا !
- نريد الان معرفة ما اذا كان الماوس يتحرك و هو و فى الوضع Click أم
لا .
- نريد معرفة أين يوجد الماوس الأن .
- نريد معرفة الاحداثيات التى بدأ عندها الماوس عند الضغط عليه أول
مره
- نحرك الاداه الى الاحدائيات الواقف عليها الماوس الأن
فى نفس المنطقة قم بكتابة الكود الاتى :
Private Sub Obj_MouseDown(ByVal sender As Object,
ByVal e As System.Windows.Forms.MouseEventArgs) Handles Obj.MouseDown
Go = True
If Go = True Then
' Set the mouse position
HoldLeft = (Control.MousePosition.X - Me.Left)
HoldTop = (Control.MousePosition.Y - Me.Top)
' Find where the mouse was clicked ONE TIME
If TopSet = False Then
OffTop = HoldTop - sender.Top
' Once the position is held,flip the switch ' so that it doesn't keep trying to find the position
TopSet = True
End If
If LeftSet = False Then
OffLeft = HoldLeft - sender.Left
' Once the position is held,flip the switch ' so that it doesn't keep trying to find the position
LeftSet = True
End If
' Set the position of the object
sender.Left = HoldLeft - OffLeft
sender.Top = HoldTop - OffTop
End If
End Sub
If Go = True Then
' Set the mouse position
HoldLeft = (Control.MousePosition.X - Me.Left)
HoldTop = (Control.MousePosition.Y - Me.Top)
' Find where the mouse was clicked ONE TIME
If TopSet = False Then
OffTop = HoldTop - sender.Top
' Once the position is held,flip the switch ' so that it doesn't keep trying to find the position
TopSet = True
End If
If LeftSet = False Then
OffLeft = HoldLeft - sender.Left
' Once the position is held,flip the switch ' so that it doesn't keep trying to find the position
LeftSet = True
End If
' Set the position of the object
sender.Left = HoldLeft - OffLeft
sender.Top = HoldTop - OffTop
End If
End Sub
لاحظ استخدام المتغير Sender و
ذلك لأن الاداه التى تضغط عليها فقط هى التى تتحرك .
Sender هو : متغير نظام يعود باسم العنصر الذى يعود بقيمه معينه , يمكنك
استخدام الكود مره واحده فقط لتحريك أى عدد من الادوات .
و لكى تضيف أداه اخرى لتحريكها فقط أضف الحدث ObjName.Event لكل
المعاملات الثلاثه :
ObjName.MouseDown
ObjName.MouseUp
ObjName.MouseMove
ليست هناك تعليقات:
اضافة تعليق