تقييم الموضوع :
  • 1 أصوات - بمعدل 4
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] أول مشاركة وأول سؤال في منتدى vb4arb
#1
Thumbs Up 
بسم الله الرحمن الرحيم

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

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

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

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



الملفات المرفقة صورة/صور
   
الرد }}}
تم الشكر بواسطة:
#2
(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
الرد }}}
تم الشكر بواسطة: عبدو الليبي
#3
انته لمن بتعمل end مثلاً للــ فورم الاول ع طول رح يتنفد مع الفورم الثاني وذا ما يحتاج شي



[صورة مرفقة: g5qidgW.jpg]

ســبحــانك الـلهم بـحمدك , الـلهم لا عــلم لـنا الى مــأ علــمتــنا , الـلهـم علــمنـا ما جــهلـنا وانــفـعنــا بــما عــلمــتنـا انــك انـتَ الـسـميع الــعلــيم الـحكـيم ~~!I!

الرد }}}
تم الشكر بواسطة:
#4
منور وااااااجد خوي vbnet عطيتني المطلوب وربي يحفظك
الرد }}}
تم الشكر بواسطة:
#5
لو سمحت أطلب كود يمنع تكبير النافذة بينما زر الإغلاق والتصغير يترك كما هو
الرد }}}
تم الشكر بواسطة:
#6
واجهتني مشكلة عند التنفيذ بعد وضع كود السابق يا ليت يوجد الحل وشكرا


الملفات المرفقة صورة/صور
   
الرد }}}
تم الشكر بواسطة:
#7
عرفت المشكلة وهي يوجد تضارب بين Option Explicit و الــ KeyAscii قمت بمسح الأول والأمور تمام
الرد }}}
تم الشكر بواسطة:



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


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