منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[سؤال] تحريك النموذج ؟ - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : [سؤال] تحريك النموذج ؟ (/showthread.php?tid=1015)

الصفحات: 1 2


تحريك النموذج ؟ - kafi2030 - 21-11-13

بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته

قمت بتصميم نمودج وقمت بجعل خاصية
FormBorderstyle = None

ثم قمت بوضع Pannel في اعلى النمودج

سؤالي :
كيف يمكن عند الضغط بالماوس على ال Pannel التي في اعلى، ان اتمكن من تحريك النموذج .


والف شكر


RE: تحريك النموذج ؟ - الشاكي لله - 21-11-13

نعم بهذه الطريقة

PHP كود :
Dim Drag As Boolean
    Dim MouseX 
As Integer
    Dim MouseY 
As Integer

    
Private Sub MainPanel_MouseDown(ByVal sender As System.ObjectByVal e As System.Windows.Forms.MouseEventArgsHandles MainPanel.MouseDown
        Drag 
True
        MouseX 
Cursor.Position.Me.Left
        MouseY 
Cursor.Position.Me.Top
    End Sub

    
Private Sub MainPanel_MouseMove(ByVal sender As System.ObjectByVal e As System.Windows.Forms.MouseEventArgsHandles MainPanel.MouseMove
        
If (DragThen
            Me
.Left Cursor.Position.MouseX
            Me
.Top Cursor.Position.MouseY
        End 
If
    
End Sub

    
Private Sub MainPanel_MouseUp(ByVal sender As System.ObjectByVal e As System.Windows.Forms.MouseEventArgsHandles MainPanel.MouseUp
        Drag 
False
    End Sub 
موفق


RE: تحريك النموذج ؟ - kafi2030 - 24-11-13

السلام عليكم

شكرا اخي
الشاكي لله على اجابتك

تم تجربة الكود ضمن مثال بسيط، ووجدت ان الحركة تكون غير منطقية على الاطلاق، فعندما اريده ان يتحرك على اليمين يتحرك على اليسار......والحركة غير انسابية، كما هو المعتاد من النموذج العادي

حاولت التعديل قليلا بالكود بعكس الاشارة ....فلم اوفق

ارجو اعادة النظر بالكود

والف شكر




RE: تحريك النموذج ؟ - 3booody - 24-11-13

كود :
Dim b As Boolean = False
    Dim x, y As Short
    Private Sub Panel1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseDown
        x = e.X
        y = e.Y
        b = True
    End Sub

    Private Sub Panel1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseMove
        If b Then
            Me.Left = MousePosition.X - x
            Me.Top = MousePosition.Y - y
        End If
    End Sub

    Private Sub Panel1_MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseUp
        b = False
    End Sub



RE: تحريك النموذج ؟ - m.sami.ak - 24-11-13

اخي العزيز المبدأ بسيط
اي يجب عليك اولاً اخذ قياسات ال panel وحسابحا من حجم الفورم ومعرفة موقع الماوس x,y

والعملية مشروحة بالكود السابق
واذا استعصى عليك الامر راسلني Smile

تحياتي للجميع
ابو سامي


RE: تحريك النموذج ؟ - الشاكي لله - 24-11-13

(24-11-13, 01:00 AM)kafi2030 كتب : السلام عليكم

شكرا اخي
الشاكي لله على اجابتك

تم تجربة الكود ضمن مثال بسيط، ووجدت ان الحركة تكون غير منطقية على الاطلاق، فعندما اريده ان يتحرك على اليمين يتحرك على اليسار......والحركة غير انسابية، كما هو المعتاد من النموذج العادي

حاولت التعديل قليلا بالكود بعكس الاشارة ....فلم اوفق

ارجو اعادة النظر بالكود

والف شكر


شي غريب والله

انا استعملت هذا الكود في اغلب برامجي ويعمل 100%

ربما ان المشكلة حدثت بسبب انك استعملت MDI Form

والله اعلم



RE: تحريك النموذج ؟ - kafi2030 - 24-11-13

السلام عليكم
الف شكر اخواني الكرام على مشاركاتكم

إقتباس :ربما ان المشكلة حدثت بسبب انك استعملت MDI Form

نعم بعد التجريب، تبين ان حركة النموذج تكون رائعة ومنطقية، عندما لا يكون النموذج MDI

ولكن ما الحل ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
اذ ان معظم البرامج تكون النماذج فيها MDI


ارجو المساعدة بالحل نظرا للاهمية القصوى

تم ارفاق مثال
والف شكر

[/b]



RE: تحريك النموذج ؟ - الشاكي لله - 24-11-13

جربت على MDI

والنتيجة تمام 100%

شوف الصورة كيف احرك بانسيابية




شكلي بنزل مشروعك وبشوف ويش قصته


كشفت المشكلة

لأنك استعملت RightToLeft

لهكذا لااحب استعمال اللغة العربية في برامجي لمثل هذه الاسباب

المهم حاولت في الكود وضبط 100%
PHP كود :
Dim Drag As Boolean
    Dim MouseX 
As Integer
    Dim MouseY 
As Integer

    
Private Sub Panel1_MouseDown(ByVal sender As ObjectByVal e As System.Windows.Forms.MouseEventArgsHandles Panel1.MouseDown
        Drag 
True
        MouseX 
Me.PointToClient(Cursor.Position).X
        MouseY 
Me.PointToClient(Cursor.Position).Y
    End Sub

    
Private Sub Panel1_MouseMove(ByVal sender As ObjectByVal e As System.Windows.Forms.MouseEventArgsHandles Panel1.MouseMove
        
If (DragThen
            Me
.Left += (Me.PointToClient(Cursor.Position).MouseX)
            
Me.Top += (Me.PointToClient(Cursor.Position).MouseY)
        
End If
    
End Sub

    
Private Sub Panel1_MouseUp(ByVal sender As ObjectByVal e As System.Windows.Forms.MouseEventArgsHandles Panel1.MouseUp
        Drag 
False
    End Sub 



RE: تحريك النموذج ؟ - kafi2030 - 24-11-13

الــــــــــــف الــــــــــف شكــــــــــــــــــر

اخــــــي /
الشـــــــــــــــــــــاكي للـــــــــــــــــــــــــــه


على ســـــــرعة ودقة الاجابة
بارك الله فيك



RE: تحريك النموذج ؟ - ناجي إبراهيم - 25-11-13

السلام عليكم...

إذا سمحتم لي... أنا أستخدم الكود التالي، و هو يعمل مع أي Form و لا يتأثر بالخاصية RighrToLeft أو RightToLeftLayout لأنه يستخدم الإحداثيات الداخلية للـ Panel:

كود :
Private StartX, StartY As Integer

Private Sub Panel1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseDown
    If e.Button = MouseButtons.Left Then
        StartX = e.X
        StartY = e.Y
    End If
End Sub

Private Sub Panel1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseMove
    If e.Button = MouseButtons.Left Then
        Me.Left += e.X - StartX
        Me.Top += e.Y - StartY
    End If
End Sub

نرجو الاستفادة و السلام.