PDA

View Full Version : MDI BackGround



powerboy2988
یک شنبه 28 تیر 1388, 12:13 عصر
سلام
چطوری می تونم یک عکس رو واسه background یک فرم MDI انتخاب کنم که کل فرم رو در بر بگیره؟

powerboy2988
دوشنبه 29 تیر 1388, 16:55 عصر
کسی نظری نداره؟

H120:D
دوشنبه 29 تیر 1388, 17:20 عصر
دوست عزیز شما می تونید تو MDI Form یه دونه Image boxیا picture box رسم کنید:چشمک:

powerboy2988
دوشنبه 29 تیر 1388, 17:58 عصر
آره همچین کاری میشه کرد اما همه فرم ها میرن زیره این picture یا image.
راه جالبی هم فکر نکنم باشه

powerboy2988
سه شنبه 30 تیر 1388, 16:05 عصر
کسی نظری نداره؟

HjSoft
سه شنبه 30 تیر 1388, 17:46 عصر
خوب شما ميتونيد از اون صفحه ي خودتون كه Mdi هست يك عكس بگيريد ، بعد بريد و اندازه هاش رو در Photoshop بدست بياريد و براش پشت زمينه ايجاد كنيد ، اين تنها راه ممكن است ( البته حدس ميزنم )

powerboy2988
سه شنبه 30 تیر 1388, 20:15 عصر
بالا اشاره کردم که چی میشه

Alireza Giba
سه شنبه 30 تیر 1388, 23:07 عصر
راهش اینه که یک فرم دیگه درست کنی که همزمان با mdi لود بشه و اندازش هم دقیق اندازه mdi باشه
بعد روی اون فرم یک picture بگذاری و در آخر هم enable فرم رو false کنی
من از این روش استفاده کردم و جواب هم داد
موفق باشی

M_P_1374
چهارشنبه 31 تیر 1388, 09:24 صبح
یه PictureBox بذارین روی فرمتون و خاصیت Visible اون رو Flase و خاصیت AutoRedraw اون رو True کنید و عکستون رو توی اون بذارین
توی Event Resize اینو بذارین


Picture1.Align = 1
Picture1.Height = Me.ScaleHeight
Picture1.PaintPicture Picture1.Picture, 0, 0, Me.ScaleWidth, Me.ScaleHeight
Set Me.Picture = Picture1.Image

HjSoft
چهارشنبه 31 تیر 1388, 11:17 صبح
شما مي توني با تنظيم خاصيت Picture در Mdi Form ، دقيقا اون كاري كه من كردم و انجام بدي . تست كردم و مشكلي نداشته تا به حال

powerboy2988
سه شنبه 06 مرداد 1388, 17:15 عصر
این روش ها هیچ کدوم جواب نداد ):

HjSoft
سه شنبه 06 مرداد 1388, 20:26 عصر
يعني چي ، امكان نداره ، ميشه بگين چرا تنظيم خاصيتPicture فرم Mdi كار نمي كنه ؟ ؟ ؟ لطفا فرم Mdi رو اينجا قرار بدين .

hossein033
سه شنبه 06 مرداد 1388, 23:45 عصر
دوست عزیز من هم امتحان کردم

با مشخصه ی Picture به راحتی می تونید برای فرم مادر (MDI) تصویر قرار بدید :لبخندساده:

powerboy2988
چهارشنبه 07 مرداد 1388, 14:04 عصر
من نگفتم که نمیشه...
من عکس رو میزارم اما اندازه عکس با فرم یکی نمیشه.
همیشه اندازه عکس تاثیر میزاره

ali-software
چهارشنبه 07 مرداد 1388, 14:37 عصر
سلام. فرم رو باز کن. در خصوصیت picture ان یک عکس بگذار

به همین راحتی
تشکر یادت نره

HjSoft
پنج شنبه 08 مرداد 1388, 14:42 عصر
دوست عزيز ، فرم شما Minimize و maximize ميشه يا نه ؟
اگر نه ، پس ثابته ، شما ميتوني با كليد Print Screen يك عكس از فرمتون بگيري . بعد توي فتوشاپ تصوير با اون ابعاد به دست بياري و با تنظيم خاصيت Picture از Mdi ميتوني اين كار رو به راحتي انجام بدي .

میلاد علوی
پنج شنبه 08 مرداد 1388, 20:27 عصر
خیلی راحت با کد زیر می تونی این کار را انجام بدی

set mdiform1.picture=loadpicture("filename")

powerboy2988
پنج شنبه 08 مرداد 1388, 21:42 عصر
دوست عزيز ، فرم شما Minimize و maximize ميشه يا نه ؟
اگر نه ، پس ثابته ، شما ميتوني با كليد Print Screen يك عكس از فرمتون بگيري . بعد توي فتوشاپ تصوير با اون ابعاد به دست بياري و با تنظيم خاصيت Picture از Mdi ميتوني اين كار رو به راحتي انجام بدي .

این روش فقط واسه یک روزولوشن جواب میده



خیلی راحت با کد زیر می تونی این کار را انجام بدی

set mdiform1.picture=loadpicture("filename")

این روش ها پاسخگو نیست دوست عزیز، دلیلشم در بالا اشاره شده



سلام. فرم رو باز کن. در خصوصیت picture ان یک عکس بگذار

به همین راحتی
تشکر یادت نره

میگم نمیشه!!!! :عصبانی++::عصبانی++::عصبانی++:: صبانی++:
میشه یک مثال بزاری :متفکر::متفکر::متفکر::متفکر:: تفکر::متفکر:

powerboy2988
شنبه 07 شهریور 1388, 12:25 عصر
آقا اين مشكل رو من هنوز نتونستم حل كنم

powerboy2988
شنبه 14 شهریور 1388, 13:00 عصر
كسي نيست كمكم كنه؟

Babak.Hassanpour
شنبه 14 شهریور 1388, 19:11 عصر
چرا اینقدر به خودتون زجر می دید؟
بفرمایید.کاری داشت

powerboy2988
شنبه 14 شهریور 1388, 20:57 عصر
آقا يك دنيا ممنون
اما يك چيزي
من مي خوام با استفاده از CommonDialog عكس پاس بدم به MDI...
سورسي كه گذاشتين تو resize فرمم گذاشتم و بعد با منو commonDialog رو باز مي كنم و عكس رو پاس مي دم اما ابعاد عكس اندازه فرم نميشه..
اين هم كد هام



Private Sub Mnu_chg_Pic_Background_Click()
CommonDialog1.ShowOpen
picOriginal.Picture = LoadPicture(CommonDialog1.FileName)
Call MDIForm_Resize
End Sub




Private Sub MDIForm_Resize()
picStretched.Move 0, 0, _
ScaleWidth, ScaleHeight

picStretched.PaintPicture _
picOriginal.Picture, _
0, 0, _
picStretched.ScaleWidth, _
picStretched.ScaleHeight, _
0, 0, _
picOriginal.ScaleWidth, _
picOriginal.ScaleHeight
Picture = picOriginal.Picture
End Sub

powerboy2988
یک شنبه 15 شهریور 1388, 17:36 عصر
چرا اینقدر به خودتون زجر می دید؟
بفرمایید.کاری داشت


ممكنه كمكم كني كه بتونم با CommonDialog عكس بزارم

Babak.Hassanpour
یک شنبه 15 شهریور 1388, 18:21 عصر
بفرما دوست من

Artur2014
چهارشنبه 27 مرداد 1395, 17:20 عصر
باسلام
کلیه مطالب MDI-Form رو در فایل فشرده پروژه اون ضمیمه میکنم
لطفا دانلود و اجرا و تکمیل تر کنید و دوباره RAR شده اونو تو برنامه نویس بذارید تا استفاده کنیم
با تشکر

چون در MDI فرم والد امکان گذاشتن باتن وجود نداره از منو استتفاده کردم برای:
1-خروج و بستن کل برنامه
2-هدف برداشتن فقط کلید اگزیت فرم والد هست به شرطی که عنوان یا کپشن فرم حذف نشود
3-بوردر یا حاشیه فرم والد که اگزیت و عنوان وکناره ای فرم راشامل میشه حذف بشن اما منو باشه
4-فقط اگزیت و پشن حذف بشه ولی با موس فرم قابل گسترش باشه
5-امکان جابجایی فرم با موس از طریق Drag حذف بشه
6-عملیات بالا خنثی بشن
7-امکان تعویض تصویر زمینه فرم والد با انتختب کاربر از داخل سیستم خودش با Brows کردن با CommonDialog

8-روش "بالای همه قراردادن یا " Always On Top کردن یکی از بچه فرمها


کدهای فرم والد:
Option Explicit
Dim lStyle 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 Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Const GWL_STYLE = (-16)
Private Const WS_BORDER = &H800000
Private Const WS_CAPTION = &HC00000

Private Sub mdiPrntFrmXMnu_Click()
Unload Me
End Sub

Private Sub thoutXMnu_Click()
lStyle = GetWindowLong(Me.hwnd, GWL_STYLE) 'Get's the WindowLong
lStyle = lStyle And Not WS_CAPTION '<--- without eXit & Caption
Call SetWindowLong(Me.hwnd, GWL_STYLE, lStyle)
End Sub

Private Sub whtoutBorderMnu_Click()
lStyle = GetWindowLong(Me.hwnd, GWL_STYLE) 'Get's the WindowLong
lStyle = lStyle And Not WS_BORDER '<--- without border
Call SetWindowLong(Me.hwnd, GWL_STYLE, lStyle)
End Sub

Private Sub wthotExtBrdrMnu_Click()
lStyle = GetWindowLong(Me.hwnd, GWL_STYLE) 'Get's the WindowLong
lStyle = lStyle And WS_BORDER And Not WS_CAPTION
Call SetWindowLong(Me.hwnd, GWL_STYLE, lStyle)
End Sub

Private Sub unMovFrmMnu_Click()
lStyle = lStyle And Not WS_BORDER '<--- Fix Place = unMovable
Call SetWindowLong(Me.hwnd, GWL_STYLE, lStyle)
End Sub

Private Sub CnclMnu_Click()
lStyle = GetWindowLong(Me.hwnd, GWL_STYLE) 'Get's the WindowLong
Call SetWindowLong(Me.hwnd, GWL_STYLE, lStyle)
End Sub
Private Sub Picture1_Resize()
Picture1.Align = 1
Picture1.Height = Me.ScaleHeight
Picture1.PaintPicture Picture1.Picture, 0, 0, Me.ScaleWidth, Me.ScaleHeight
Set Me.Picture = Picture1.Image
End Sub
Private Sub nwBkGrdMnu_Click()
CommonDialog1.ShowOpen
Picture1.Picture = LoadPicture(CommonDialog1.FileName)
Call Picture1_Resize
End Sub


کدهای فرم فرزند1:
Option Explicit
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Const GWL_STYLE = (-16)
Const WS_MINIMIZEBOX = &H20000
Const WS_MAXIMIZEBOX = &H10000
Private Sub Form_Load()
Dim L As Long
L = GetWindowLong(Me.hwnd, GWL_STYLE)
L = L And Not (WS_MINIMIZEBOX)
L = L And Not (WS_MAXIMIZEBOX)
L = SetWindowLong(Me.hwnd, GWL_STYLE, L)

mdiChildFrm1.Top = 0 'MdiParentFrm.Top - 200
mdiChildFrm1.Left = 0 'MdiParentFrm.Left - 200
End Sub

Private Sub Command1_Click()
mdiChildFrm2.Top = mdiChildFrm1.Top + mdiChildFrm1.Height
mdiChildFrm2.Left = mdiChildFrm1.Left
mdiChildFrm2.Show
End Sub


کدهای فرم فرزند2:


Option Explicit

Private Sub Command1_Click()
mdiChildFrm1.Show
End Sub




9-چرا فرم فرزند دوم موقع Show شدن با باتن روی فرم فرزند1 از اندازه خودش بزرگتر میشه؟
10-چرا کدهای API که روی فرمهای ساده (غیرMDI) برای ترنسپرنت یا شفاف ردن اونا عمل میکنند روی بچه فرمهای MDI یا والد اون ار نمیکنند؟ آیا روشی موثر سراغ دارید؟
باتشکر

darna_computer
یک شنبه 11 شهریور 1397, 13:19 عصر
سلام. من یه مشکلی دارم. وقتی فرم فرزندم رو توی فرم اصلی باز میکنم، زمانی که فرم های غیر فرزند رو باز میکنم، فرم فرزندم میره پشت زمینه فرم اصلی قرار میگیره. اما من میخوام این فرم فرزند همیشه توی صفحه باشه و کاربر بتونه انو ببینه. الان هم توی برنامه م نتونستم مشکلش رو حل کنم. کسی میتونه کمک کنه؟
لینک برنامه م هم
اینجا (http://isofts.ir/MyProg/NabzSetup10.exe)
ست. اگه ببینید متوجه میشید. خیلی برام مهمه. لطفا کمک کنید.