PDA

View Full Version : سوال در مورد فرمهای MDI



evilboy
دوشنبه 11 دی 1385, 17:45 عصر
سلام
چجوری می تونم برای فرمهای mdi یک بکگراند بزارم و بقیه دکمه ها رو روی اون بکگراند بزارم و اینکه چجوری میشه MaxButton رو از فرمهای MDI حذف کرد
ممنون

Payam Moradi
دوشنبه 11 دی 1385, 19:24 عصر
یک PictureBox روی فرم بذار و ارتفاعش رو تنظیم کن و کلیدها رو روی آن بذار. تصویر رو هم در PictureBox تنظیم کن.

evilboy
دوشنبه 11 دی 1385, 19:44 عصر
دوست عزیز چجوری می تونم دکمه MaxButton رو غیر فعال کنم

Payam Moradi
سه شنبه 12 دی 1385, 01:22 صبح
راستش پیدا نکردم ولی اگر میخوای فرم Max نشه میتونی از این ابزار استفاده کنی.:چشمک:
-------------------
-------------------

evilboy
سه شنبه 12 دی 1385, 08:54 صبح
دوست داشتم 20 بار دکمه تشکر رو بزنم ولی حیف
خیلی لطف کردی
ممنون

romina2006
پنج شنبه 14 دی 1385, 12:57 عصر
Option Explicit
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Const GWL_STYLE = (-16)
Private Const WS_MINIMIZEBOX = &H20000
Private Const WS_MAXIMIZEBOX = &H10000
Public Sub DisableMax(f As MDIForm)
Dim Max As Long
Max = GetWindowLong(f.hWnd, GWL_STYLE)
Max = Max And Not (WS_MAXIMIZEBOX)
Max = SetWindowLong(f.hWnd, GWL_STYLE, Max)
End Sub
Private Sub MDIForm_Load()
DisableMax Me
End Sub

evilboy
جمعه 15 دی 1385, 16:45 عصر
دوست عزیز دکمه MaxBotton غیر فعال می شه ولی همچنان با ماوس کوچیک بزرگ می شه

romina2006
جمعه 15 دی 1385, 22:51 عصر
Option Explicit
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Const GWL_STYLE = (-16)
Private Const WS_MINIMIZEBOX = &H20000
Private Const WS_MAXIMIZEBOX = &H10000
Private Const MF_BYCOMMAND = &H0&
Private Const MF_BYPOSITION = &H400&

Public Sub DisableMax(f As MDIForm)
Dim Max As Long
Max = GetWindowLong(f.hwnd, GWL_STYLE)
Max = Max And Not (WS_MAXIMIZEBOX)
Max = SetWindowLong(f.hwnd, GWL_STYLE, Max)
End Sub

Private Sub MDIForm_Load()
DisableMax Me
Dim hSysMenu As Long, n As Long
hSysMenu = GetSystemMenu(Me.hwnd, False)
RemoveMenu hSysMenu, 2, MF_BYPOSITION
RemoveMenu hSysMenu, 3, MF_BYPOSITION
DrawMenuBar Me.hwnd
End Sub

evilboy
دوشنبه 25 دی 1385, 18:31 عصر
من دکمه ها مو روی یک PictureBox گذاشتم ولی وقتی یک فرم دیگه رو فراخوانی می کنم می ره زیر PictureBox
کسی راه حلی برای این مشکل نداره
ممنون

Neeloofar
دوشنبه 25 دی 1385, 20:45 عصر
من دکمه ها مو روی یک PictureBox گذاشتم ولی وقتی یک فرم دیگه رو فراخوانی می کنم می ره زیر PictureBox
کسی راه حلی برای این مشکل نداره
ممنون

لزومی نداره فرمها رو از نوع MDIChild تعریف کنی!
راه دوم اینه که وقتی فرمی رو فراخوانی میکنی PictureBox رو مخفی کنه و پس از Unload فرم دوباره نمایش داده بشه!

hidensoft
سه شنبه 26 دی 1385, 09:31 صبح
سلام چطور می شه از کوچک و بزرگ شدن فرم MDI به وسیله لبه های فرم جلو گیری کرد ؟

Payam Moradi
سه شنبه 26 دی 1385, 12:28 عصر
از همون ابزار MinMax صفحه قبل که معرفی کردم استفاده کن!