منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
فكرة فروم متطور - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (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=16360)



فكرة فروم متطور - أسامة - 05-07-16

فكرة فروم متطور عمل فروم مع خاصية السحب والإسقاط ماذا اقصد , اقصد عمل فروم  مع خاصية السحب والإسقاط داخل الفروم الاخر بمعنى يمكن وضع الفروم داخل الفروم الاخر و اخراجة من الفروم الاخر دون فقدان البيانات فكرت فى بعض الاكواد التى يمكن ان تساعد
لاظهار الفروم فى الفروم الاخر عند استدعاء الفروم لاول مره يمكن استخدام هذا الكود
كود :
    Dim f As New Form3 With {.TopLevel = False, .Width = 100, .Height = 100, .Location = New Point(50, 30)}
       Me.Controls.Add(f)
       f.Show()
او
كود :
   <DllImport("user32.dll", EntryPoint:="SetParent")>
   Private Shared Function SetParent(ByVal hWndChild As IntPtr, ByVal hWndNewParent As IntPtr) As IntPtr
   End Function

       Dim f As New Form3 With {.TopLevel = False, .Width = 100, .Height = 100, .Location = New Point(50, 30)}
       SetParent(f.Handle, Me.Handle)
       f.Show()
مع العلم عند اظهار او ادخال الفروم يتم توسيع الفروم الاخر بحجم مناسب لحجم الفروم الذى سيتم ادخاله 
باستخدام هذا الكود
كود :
       Me.Size = New Size(Me.Size + f.Size)
لان كيف يمكن سحب واسقاط الفروم  دون فقدان البيانات فكرت فى كود Get Mouse Location يتم تحريك الفروم مع مؤشر الفأره و عند الافلات يتم اسقاط الفروم 
كود :
Cursor.Position.X
Cursor.Position.Y
  Private Sub Form3_MouseDown(sender As Object, e As MouseEventArgs) Handles Me.MouseDown
       If e.X = Cursor.Position.X And e.Y = Cursor.Position.Y Then
           Me.Location = New Point(Cursor.Position.X, Cursor.Position.Y)
       End If
   End Sub

لاكن كيف يمكن اخراج و ادخال الفروم من إطار الفروم الاخر دون فقدان البيانات!


RE: فكرة فروم متطور - الوادي - 05-07-16

يا أسامة،

هذه محاولة سريعة لضيق الوقت، ولكن فيها عيوب.

لتجربة هذه المحاولة، أنشأ مشروع وضع فيه Form1 وForm2 وModule1 فقط

Form1
PHP كود :
Public Class Form1

    
Private Sub Form1_Load(sender As System.ObjectAs System.EventArgsHandles MyBase.Load
        Form2
.Show()
    
End Sub

    
Private Sub Form1_LocationChanged(sender As ObjectAs System.EventArgsHandles Me.LocationChanged
        FormLocationChanged
(MeForm2)
    
End Sub

End 
Class 

Form2
PHP كود :
Public Class Form2

    
Private Sub Form1_LocationChanged(sender As ObjectAs System.EventArgsHandles Me.LocationChanged
        FormLocationChanged
(MeForm1)
    
End Sub

End 
Class 

Moudle1
PHP كود :
Module Module1

    
<Runtime.InteropServices.DllImport("user32.dll")> _
    
Public Function SetParent(ByVal hWndChild As IntPtrByVal hWndNewParent As IntPtr) As IntPtr
    End 
Function

    <
Runtime.InteropServices.DllImport("user32.dll"ExactSpelling:=TrueSetLastError:=True)> _
    
Public Function GetCursorPos(ByRef point As Point) As Boolean
    End 
Function

    Public 
Sub FormLocationChanged(ByVal formA As FormByVal formB As Form)

        
Dim mousePos As New Point
        GetCursorPos
(mousePos)

        
Dim rectFormB As Rectangle formB.RectangleToScreen(formB.ClientRectangle)

        If 
mousePos.rectFormB.And mousePos.< (rectFormB.rectFormB.Width_
        
And mousePos.rectFormB.And mousePos.< (rectFormB.rectFormB.Height_
        Then
            SetParent
(formA.HandleformB.Handle)

        Else
            
SetParent(formA.HandleNothing)

        
End If

    
End Sub

End Module 



RE: فكرة فروم متطور - أسامة - 05-07-16

جزاك الله خير اخى يوجد فقط مشكلة صغير من الصعب اخراج الفروم و خاصة من الجانب الأيمن و عند الاخراج يجب افلات الفاره على اطار الفروم ثم سحبةمن جديد للتمكن من سحبة


RE: فكرة فروم متطور - الوادي - 05-07-16

يا أسامة،

هذه المشكلة محتاجة وقت، لكن وقتي ضيق.
لو اتحلت مشكلة الفأرة تمام.


RE: فكرة فروم متطور - أسامة - 05-07-16

(05-07-16, 04:46 PM)الوادي كتب : يا أسامة،

هذه المشكلة محتاجة وقت، لكن وقتي ضيق.
لو اتحلت مشكلة الفأرة تمام.

حسنآ اخى شكرآ على مساعدتك رغم ضيق وقتك