بسم الله الرحمن الرحيم
السلام عليكم.. هذي أول مشاركة بالنسبة ليا

أنا
عبدو من ليبيا خبرتي في الفيجوال البيسك تقريبا 70 %
بالنسبة لسؤالي: أنا عندي برنامج يسمى التمام الشهري للموظفين، المهم أنا عندي عدد 2 فورم كما هو موضح بالصورة أريد أن أجعل Form2 تحت سيطرة Form1 الرئيسي..
توضيح: عند الضغط على إغلاق أو تصغير على Form1 يحدث أيضًا في Form2 وأيضا عند السحب أو تحريك الفورم الرئيسي يتحرك يتحرك الـ Form2
أنا موجود في أي سؤال أو استفسار..
(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
انته لمن بتعمل end مثلاً للــ فورم الاول ع طول رح يتنفد مع الفورم الثاني وذا ما يحتاج شي
منور وااااااجد خوي vbnet عطيتني المطلوب وربي يحفظك
لو سمحت أطلب كود يمنع تكبير النافذة بينما زر الإغلاق والتصغير يترك كما هو
واجهتني مشكلة عند التنفيذ بعد وضع كود السابق يا ليت يوجد الحل وشكرا
عرفت المشكلة وهي يوجد تضارب بين Option Explicit و الــ KeyAscii قمت بمسح الأول والأمور تمام