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

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغات البرمجة الاخرى (http://vb4arb.com/vb/forumdisplay.php?fid=4)
+--- قسم : قسم لغة vb6.0 (http://vb4arb.com/vb/forumdisplay.php?fid=18)
+--- الموضوع : [سؤال] أول مشاركة وأول سؤال في منتدى vb4arb (/showthread.php?tid=2980)



أول مشاركة وأول سؤال في منتدى vb4arb - عبدو الليبي - 23-05-14

بسم الله الرحمن الرحيم

السلام عليكم.. هذي أول مشاركة بالنسبة ليا Blush أنا عبدو من ليبيا خبرتي في الفيجوال البيسك تقريبا 70 %

بالنسبة لسؤالي: أنا عندي برنامج يسمى التمام الشهري للموظفين، المهم أنا عندي عدد 2 فورم كما هو موضح بالصورة أريد أن أجعل Form2 تحت سيطرة Form1 الرئيسي..

توضيح: عند الضغط على إغلاق أو تصغير على Form1 يحدث أيضًا في Form2 وأيضا عند السحب أو تحريك الفورم الرئيسي يتحرك يتحرك الـ Form2

أنا موجود في أي سؤال أو استفسار..




RE: أول مشاركة وأول سؤال في منتدى vb4arb - vbnet - 24-05-14

(23-05-14, 06:04 PM)عبدو الليبي كتب : ...
...سؤالي: ... أنا عندي عدد 2 فورم كما هو موضح بالصورة أريد أن أجعل Form2 تحت سيطرة Form1 الرئيسي..

توضيح: عند الضغط على إغلاق أو تصغير على Form1 يحدث أيضًا في Form2 وأيضا عند السحب أو تحريك الفورم الرئيسي يتحرك يتحرك الـ Form2
...



منقول (مع تعديل بسيط ليناسب طلبك)

ضع هذا الكود في Module
كود :
Option Explicit

Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal HWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal HWnd As Long, ByVal Msg As Long, ByVal WParam As Long, ByVal LParam As Long) As Long

Private Const GWL_WNDPROC = (-4)
Private Const WM_MOVE = &H3

Dim m_PrevProc As Long

Private Function WndProc(ByVal HWnd As Long, ByVal Msg As Long, ByVal WParam As Long, ByVal LParam As Long) As Long
    WndProc = CallWindowProc(m_PrevProc, HWnd, Msg, WParam, LParam)
    If Msg = WM_MOVE Then
        Form1.Me_OnMove
    End If
End Function

Public Sub WndProcHook(ByVal HWnd As Long)
    m_PrevProc = SetWindowLong(HWnd, GWL_WNDPROC, AddressOf WndProc)
End Sub
Public Sub WndProcUnHook(ByVal HWnd As Long)
    SetWindowLong HWnd, GWL_WNDPROC, m_PrevProc
End Sub

ضع هذا الكود في Form1
كود :
Option Explicit

Private Sub Form_Load()
    Call WndProcHook(Me.HWnd) ' Important مهم
    '----------------------------------------
    
    Form2.Show vbModeless, Me
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Call WndProcUnHook(Me.HWnd) ' Important مهم
End Sub


Friend Sub Me_OnMove()
  Form2.Left = Me.Left
  Form2.Top = Me.Top + Me.Height
End Sub

(إذا لزم الأمر) ضع هذا الكود في Form2 لمنع غلق الفورم باستخدام الزر X بواسطة الحدث Form_QueryUnload
كود :
Option Explicit

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    If UnloadMode = vbFormControlMenu Or UnloadMode = vbFormCode Then Cancel = True
End Sub



RE: أول مشاركة وأول سؤال في منتدى vb4arb - a_almisery - 24-05-14

انته لمن بتعمل end مثلاً للــ فورم الاول ع طول رح يتنفد مع الفورم الثاني وذا ما يحتاج شي


RE: أول مشاركة وأول سؤال في منتدى vb4arb - عبدو الليبي - 24-05-14

منور وااااااجد خوي vbnet عطيتني المطلوب وربي يحفظك



RE: أول مشاركة وأول سؤال في منتدى vb4arb - عبدو الليبي - 25-05-14

لو سمحت أطلب كود يمنع تكبير النافذة بينما زر الإغلاق والتصغير يترك كما هو



RE: أول مشاركة وأول سؤال في منتدى vb4arb - عبدو الليبي - 25-05-14

واجهتني مشكلة عند التنفيذ بعد وضع كود السابق يا ليت يوجد الحل وشكرا


RE: أول مشاركة وأول سؤال في منتدى vb4arb - عبدو الليبي - 25-05-14

عرفت المشكلة وهي يوجد تضارب بين Option Explicit و الــ KeyAscii قمت بمسح الأول والأمور تمام