PDA

نسخه کامل مشاهده نسخه کامل : مشکل وحشتناک متفاوت بودن اندازه فرم در مونیتور های مختلف



keyvan20000
18-12-2009, 22:43
سلام دوستان ، من برنامه رو به صورت تمام صفحه در مونیتور 17 اینچی طراحی کردم ولی وقتی اونو توی یک مونیتور دیگه مثلا 15 اینچی اجرا می کنم برنامه از مونیتور میره بیرون و بیشتر از اون هم قابل تغییر اندازه نیست.
چیکار میشه کرد که برنامه به صورت خودکار در مونیتور های مختلف به صورت تمام صفحه در اون بدون مشکل اجرا بشه؟

تورو به خدا کمک کنید مشکل قبلیم رو که هیچ کسی پاسخی نداد ولی خداییش این یکی رو یه جوابی بدید.
به هرحال ممنون:13:

MrGee
18-12-2009, 22:52
نمی دونم ولی اگه بتونید با api اندازه مانیتور رو پیدا کنی اون وقت می تونی کارت رو راه
بیندازی

البته می تونی قبل از اجرای برنامه اصلی از یه فرم استفاده کنی تا تو اون سایز مانیتور رو بگیری
و به اندازه اون سایز کنترل ها رو دستکاری کنی

ar.constantine
19-12-2009, 15:34
سلام
شما باید از پنجره ی properties فرم مشخصه ی WindowState فرم رو برابر با maximize قرار بدی.
که در این صورت برنامه سایز فرم را در هر مانیتوری به صورت خودکار تنظیم میکند.

keyvan20000
20-12-2009, 00:54
این کارم کرده بودم بازم کردم نشد:41:

MrGee
20-12-2009, 08:31
این کارم کرده بودم بازم کردم نشد:41:

کدوم کار؟
مال من یا او ن یکی

ساسان مهاجم
20-12-2009, 09:02
اگر تو barnamenevis.org سرچ كني 150% پيدا ميكني

keyvan20000
20-12-2009, 21:53
من window state رو امتحان کردم نشد

majj
21-12-2009, 13:40
برنامتون رو روی رزولیشن(مربوط به مانیتور)1024*768 تنظیم کنید روی هردو مانیتور جواب میده

cami_au_ir
04-01-2010, 17:41
در برنامه form_load ازدستور زیر برای تنضیم استفاده کن

screen

modirmasool
13-01-2010, 13:05
ببین باید یه مقدار برنامه نویسی کنی. اول از همه windowstate رو maximize کن بعد باید اولی که فرم لود میشه بیای طول و عرض فرم رو اندازه بگیری. حالا از اینجا به بعد دو تا راه داری:
1- اینکه متناسب با اندازه فرم، سایز اشیا رو کوچیک کنی(البته به وسیله ی کد!)
2- بیای یه دستک قرار بدی تا درصورتی که تمام اشیا روی فرم در صفحه دیده نشدن، کاربر بتونه با دستک موجود در برنامه فرم رو پایین و بالا ببره.
راستی راه دوم با کلاس تره و منطقی تر. تازه خیلی از نرم افزارها هم راه دوم رو انتخاب میککن.
نکته: برای راه دوم بهتره که با آرایه ها کار کنی تا از حجم کد نویسیت کاسته بشه.

privatekamy
14-01-2010, 08:17
سلام در موقع طراحی فرمهات کمترین رزولوشن رو معیار برای کار کردن بقیه قرار بده و خودت هم با همون رزولوشن
یعنی 1024*768 فرمهات رو تو vb بساز تا بقیه کابرا مشگل نداشته باشن

AQOUA
17-04-2010, 20:05
با سلام
آقايون و خانوما شرمنده، ميدونم يكم ديره ولي گفتم بزارم تا شما هم استفاده كنيد.


Private Sub Form_Load()
'set the graphics mode of this form to persistent
Me.AutoRedraw = True
'start the enumeration
EnumDisplayMonitors ByVal 0&, ByVal 0&, AddressOf MonitorEnumProc, ByVal 0&
End Sub
'in module
Public Const MONITORINFOF_PRIMARY = &H1
Public Const MONITOR_DEFAULTTONEAREST = &H2
Public Const MONITOR_DEFAULTTONULL = &H0
Public Const MONITOR_DEFAULTTOPRIMARY = &H1
Public Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Public Type MONITORINFO
cbSize As Long
rcMonitor As RECT
rcWork As RECT
dwFlags As Long
End Type
Public Type POINT
x As Long
y As Long
End Type
Public Declare Function GetMonitorInfo Lib "user32.dll" Alias "GetMonitorInfoA" (ByVal hMonitor As Long, ByRef lpmi As MONITORINFO) As Long
Public Declare Function MonitorFromPoint Lib "user32.dll" (ByVal x As Long, ByVal y As Long, ByVal dwFlags As Long) As Long
Public Declare Function MonitorFromRect Lib "user32.dll" (ByRef lprc As RECT, ByVal dwFlags As Long) As Long
Public Declare Function MonitorFromWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal dwFlags As Long) As Long
Public Declare Function EnumDisplayMonitors Lib "user32.dll" (ByVal hdc As Long, ByRef lprcClip As Any, ByVal lpfnEnum As Long, ByVal dwData As Long) As Long
Public Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Public Function MonitorEnumProc(ByVal hMonitor As Long, ByVal hdcMonitor As Long, lprcMonitor As RECT, ByVal dwData As Long) As Long
Dim MI As MONITORINFO, R As RECT
Debug.Print "Moitor handle: " + CStr(hMonitor)
'initialize the MONITORINFO structure
MI.cbSize = Len(MI)
'Get the monitor information of the specified monitor
GetMonitorInfo hMonitor, MI
'write some information on teh debug window
Debug.Print "Monitor Width/Height: " + CStr(MI.rcMonitor.Right - MI.rcMonitor.Left) + "x" + CStr(MI.rcMonitor.Bottom - MI.rcMonitor.Top)
Debug.Print "Primary monitor: " + CStr(CBool(MI.dwFlags = MONITORINFOF_PRIMARY))
'check whether Form1 is located on this monitor
If MonitorFromWindow(Form1.hwnd, MONITOR_DEFAULTTONEAREST) = hMonitor Then
Debug.Print "Form1 is located on this monitor"
End If
'heck whether the point (0, 0) lies within the bounds of this monitor
If MonitorFromPoint(0, 0, MONITOR_DEFAULTTONEAREST) = hMonitor Then
Debug.Print "The point (0, 0) lies wihthin the range of this monitor..."
End If
'check whether Form1 is located on this monitor
GetWindowRect Form1.hwnd, R
If MonitorFromRect(R, MONITOR_DEFAULTTONEAREST) = hMonitor Then
Debug.Print "The rectangle of Form1 lies within this monitor"
End If
Debug.Print ""
'Continue enumeration
MonitorEnumProc = 1
End Function


thanks

keb
26-04-2010, 16:37
بیا اینم یه برنامه کاری از خودم:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] با این برنامه میتونی مختصات رو بدست بیاری.:31: