تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] تحريك النموذج ؟
#1
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته

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

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

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


والف شكر


الملفات المرفقة صورة/صور
   
الرد
تم الشكر بواسطة:
#2
نعم بهذه الطريقة

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 
موفق
الرد
تم الشكر بواسطة: kafi2030 , 3booody
#3
السلام عليكم

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

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

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

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

والف شكر

الرد
تم الشكر بواسطة:
#4
كود :
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
الرد
تم الشكر بواسطة: الشاكي لله , kafi2030
#5
اخي العزيز المبدأ بسيط
اي يجب عليك اولاً اخذ قياسات ال panel وحسابحا من حجم الفورم ومعرفة موقع الماوس x,y

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

تحياتي للجميع
ابو سامي
الرد
تم الشكر بواسطة:
#6
(24-11-13, 01:00 AM)kafi2030 كتب : السلام عليكم

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

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

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

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

والف شكر


شي غريب والله

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

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

والله اعلم
الرد
تم الشكر بواسطة: kafi2030
#7
السلام عليكم
الف شكر اخواني الكرام على مشاركاتكم

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

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

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


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

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

[/b]


الملفات المرفقة صورة/صور
   

.zip   WindowsApplication1.zip (الحجم : 90.46 ك ب / التحميلات : 136)
الرد
تم الشكر بواسطة:
#8
جربت على 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 
الرد
تم الشكر بواسطة: kafi2030
#9
الــــــــــــف الــــــــــف شكــــــــــــــــــر

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


على ســـــــرعة ودقة الاجابة
بارك الله فيك
الرد
تم الشكر بواسطة:
#10
السلام عليكم...

إذا سمحتم لي... أنا أستخدم الكود التالي، و هو يعمل مع أي 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

نرجو الاستفادة و السلام.
بِسْمِ اللهِ الرَّحْمَنِ الرَّحِيمِ ( وَ مَا تُقَدِّمُوا لِأَنفُسِكُم مِّنْ خَيْرٍ تَجِدُوهُ عِندَ اللهِ هُوَ خَيْراً وَ أَعْظَمَ أَجْراً ) صَدَقَ اللهُ الْعَظِيمُ
الرد
تم الشكر بواسطة: الشاكي لله


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  عرض النموذج في وضع التعديل atefkhalf2004 1 140 29-06-18, 03:36 PM
آخر رد: فراس الغزي
  طباعة مربعات النص من علي النموذج مباشرة السيد الجوهري 4 238 18-04-18, 08:55 AM
آخر رد: السيد الجوهري
  كود تحريك الادوات anes 4 254 22-01-18, 10:15 PM
آخر رد: محمود صالح
  [ تمّ الحل ] : عدم تحريك الفورم عبد العزيز البسكري 2 239 08-01-18, 08:45 PM
آخر رد: عبد العزيز البسكري
  ما هو كود فتح النموذج باستخدام F1 على سبيل المثال السيد الجوهري 2 183 08-01-18, 07:33 PM
آخر رد: السيد الجوهري
  رسالة خطاء تظهر بعد اغلاق النموذج aftfm 1 191 08-11-17, 06:15 PM
آخر رد: silverlight
Wink [سؤال] كيفية تحريك اداة TrackBar عند تصميم برنامج ميديا بلاير malzwy2003 0 277 01-10-17, 11:04 PM
آخر رد: malzwy2003
Lightbulb للخبراء هل توجد مكتبة او اداة لعمل مثل هذا النموذج عن طريق vb.net ارجو المساعدة Amrjamil 6 643 18-02-17, 02:19 PM
آخر رد: Amrjamil
  كيف يمكن تحريك مربعات النص على التقرير السيد الجوهري 3 621 27-01-17, 11:29 PM
آخر رد: السيد الجوهري
  كود تحريك نص في شريط عنوان النافذة atefkhalf2004 2 3,550 05-01-17, 11:47 PM
آخر رد: asdsoft

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم