PDA

View Full Version : سوال: کنترل اندازه فرم در مانیتور های مختلف



SilverLearn
دوشنبه 30 بهمن 1391, 23:17 عصر
سلام دوستان
مشکل من اینجاس که می خوام اندازه فرم ها در برنامه در مانیتور های مختلف ست بشه
به طور مثال الان من ال سی دی دارم و یکم صفحه کشیده هست ولی وقتی نرم افزار ساخته شد و ارائه شد کاربر با مانیتور معمولی اون رو بارگذاری می کنه و فرم نصفش از صفحه میزنه بیرون
راهی هست که بشه کنترل کرد این موضوع رو ؟

m2011kh
دوشنبه 30 بهمن 1391, 23:43 عصر
سلام میتونید روزلیشن مانیتور رو بدست بیارید و اندازه برنامه تون رو نسبت به اون متغیر کنید مثلا اندازه طول فروم نصف طول مانیتور و عرض فروم نصف عرض مانیتور.
برای بدست آوردن روزلیشن مانیتور فکر کنم اینطوری بود:
برای عرض صفحه:
Screen.Widthبرای طول صفحه:
Screen.Height
برای اینکه اجزای فرومتون هم متناسب با اندازه فرومتون تغییر کنه یه کامپوننت هست به اسم FreeSize مطمئن نیستم ولی فکر کنم همین اسم بود.متأسفانه این کامپوننت رو در دسترس ندارم تا ضمیمه کنم ولی اگه بگردید تو گوگل یا همین جا حتما پیدا میکنید.

موفق و سربلند باشید.

شب بخیر
MMD

mehran901
سه شنبه 01 اسفند 1391, 00:11 صبح
عوض کردن رزولشن صفحه هم که خودت میدونی دیگه قطعا جواب میده !

SilverLearn
سه شنبه 01 اسفند 1391, 01:29 صبح
عوض کردن رزولشن صفحه هم که خودت میدونی دیگه قطعا جواب میده !

من که منظور شما رو اصلا نفهمیدم :)

rezankh
سه شنبه 01 اسفند 1391, 19:36 عصر
از كامپوننت ChangeRes هم ميشه استفاده كنيد. توي Form Load هم كد زير رو بذاريد. به اين ترتيب رزولوشن سيستم هنگام لود فرم تغيير ميكنه، كه باز هنگام بسته شدن برنامه ميشه تغييرش داد به مقدار قبلي.


Private Sub Form_Load()

ChangeRes1.GetMonitorInfo = True
HeightLabel.Caption = ChangeRes1.Ypixels
WidthLabel.Caption = ChangeRes1.Xpixels

Dim mm As DEVMODE
Dim retval As Long

Me.AutoRedraw = True
mm.dmSize = Len(mm)
retval = EnumDisplaySettings(vbNullString, ENUM_CURRENT_SETTINGS, mm)

mm.dmPelsWidth = 1024
mm.dmPelsHeight = 768

retval = ChangeDisplaySettings(mm, CDS_TEST)
If retval <> DISP_CHANGE_SUCCESSFUL Then
Me.Print "Cannot change"
Else
retval = ChangeDisplaySettings(mm, CDS_UPDATEREGISTRY)
Select Case retval
Case DISP_CHANGE_SUCCESSFUL
Me.Print " successfully"
Case DISP_CHANGE_RESTART
Me.Print "A reboot is necessary"
Case Else
Me.Print "Unable to change"
End Select
End If

End Sub

' بستن فرم
Private Sub Image1_Click()

Dim mm As DEVMODE
Dim retval As Long

Me.AutoRedraw = True
mm.dmSize = Len(mm)
retval = EnumDisplaySettings(vbNullString, ENUM_CURRENT_SETTINGS, mm)

mm.dmPelsWidth = Wellcome.WidthLabel.Caption
mm.dmPelsHeight = Wellcome.HeightLabel.Caption

retval = ChangeDisplaySettings(mm, CDS_TEST)
If retval <> DISP_CHANGE_SUCCESSFUL Then
Me.Print "Cannot change"
Else
retval = ChangeDisplaySettings(mm, CDS_UPDATEREGISTRY)
Select Case retval
Case DISP_CHANGE_SUCCESSFUL
Me.Print " successfully"
Case DISP_CHANGE_RESTART
Me.Print "A reboot is necessary"
Case Else
Me.Print "Unable to change"
End Select
End If

End
End Sub

SilverLearn
سه شنبه 01 اسفند 1391, 21:52 عصر
Dim mm As DEVMODE

همچین نوعی وجود داره ؟

از تابع های کد بالا هم خطا میگیره
مطمئنی این کامپوننت مال دات نت نیس ؟

rezankh
سه شنبه 01 اسفند 1391, 22:54 عصر
100274
Dim mm As DEVMODE

همچین نوعی وجود داره ؟

از تابع های کد بالا هم خطا میگیره
مطمئنی این کامپوننت مال دات نت نیس ؟

نمونه سورس رو ميزارم . راستي ماژول رو فراموش كرده بودم.