potrsti fare un piccolo escamotage
che va a leggere la risoluzione
codice:
Public Function CheckRez(pixelWidth As Long, pixelHeight As Long) As Boolean
Dim lngTwipsX As Long
Dim lngTwipsY As Long
'converte i pixels in twips
lngTwipsX = pixelWidth * 15
lngTwipsY = pixelHeight * 15
' rileva la risoluzione corrente
If lngTwipsX <> Screen.Width Then
CheckRez = False
Else
If lngTwipsY <> Screen.Height Then
CheckRez = False
Else
CheckRez = True
End If
End If
End Function
se non è quella che vuoi tu
codice:
Public Declare Function GetDesktopWindow Lib "user32" () As Long
Public Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long
Public Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
Public Declare Function ReleaseDC Lib "user32" (ByVal hWnd As Long, ByVal hdc As Long) As Long
Public Const LOGPIXELSX = 88
Public Const LOGPIXELSY = 90
'MODULO:
Public Function IsScreenFontSmall() As Boolean
Dim hWndDesk As Long
Dim hDCDesk As Long
Dim logPix As Long
Dim r As Long
hWndDesk = GetDesktopWindow()
hDCDesk = GetDC(hWndDesk)
logPix = GetDeviceCaps(hDCDesk, LOGPIXELSX)
r = ReleaseDC(hWndDesk, hDCDesk)
If logPix = 96 Then IsScreenFontSmall = True
Exit Function
End Function
Sub ResizeControls(frmName As Form, winstate As Integer)
On Error Resume Next
Dim designwidth As Integer, designheight As Integer, designfontsize As Integer, currentfontsize As Integer
Dim numofcontrols As Integer, a As Integer
Dim movetype As String, moveamount As Integer
designwidth = 1024
designheight = 768
designfontsize = 96
' qui al posto di rilegger la risoluzioni imposti tu le dimensioni dello screen
GetResolutionX = 'esempio 1024
GetResolutionY = ' esempio 768
ratiox = GetResolutionX / designwidth
ratioy = GetResolutionY / designheight
'check to see what size of fonts are being used
If IsScreenFontSmall Then
currentfontsize = 96
Else
currentfontsize = 120
End If
'work out the ratio for the fontsize
fontratio = designfontsize / currentfontsize
If ratiox = 1 And ratioy = 1 And fontratio = 1 Then Exit Sub
numofcontrols = frmName.Controls.Count - 1 'count the number of controls on the form
If winstate = 0 Then
frmName.Height = frmName.Height * ratioy
frmName.Width = frmName.Width * ratiox
If frmName.Tag <> "" Then
movetype = Left(frmName.Tag, 1)
moveamount = Mid(frmName.Tag, 2, Len(frmName.Tag))
Select Case movetype
Case "L"
frmName.Left = frmName.Left + moveamount
Case "T"
frmName.Top = frmName.Top + moveamount
Case "H"
frmName.Height = frmName.Height + moveamount
Case "W"
frmName.Width = frmName.Width + moveamount
End Select
End If
ElseIf winstate = 2 Then
frmName.Width = Screen.Width
frmName.Height = Screen.Height
frmName.Top = 0
frmName.Left = 0
End If
For a = 0 To numofcontrols
If frmName.Controls(a).Font.Size <= 8 And ratiox < 1 Then
frmName.Controls(a).Font.Name = "Small Fonts"
frmName.Controls(a).Font.Size = frmName.Controls(a).Font.Size - 0.5
Else
frmName.Controls(a).Font.Size = frmName.Controls(a).Font.Size * ratiox
End If
If TypeOf frmName.Controls(a) Is Line Then
frmName.Controls(a).X1 = frmName.Controls(a).X1 * ratiox
frmName.Controls(a).Y1 = frmName.Controls(a).Y1 * ratioy
frmName.Controls(a).X2 = frmName.Controls(a).X2 * ratiox
frmName.Controls(a).Y2 = frmName.Controls(a).Y2 * ratioy
ElseIf TypeOf frmName.Controls(a) Is PictureBox Then
frmName.Controls(a).Width = frmName.Controls(a).Width * ratiox
frmName.Controls(a).Height = frmName.Controls(a).Height * ratioy
frmName.Controls(a).Top = frmName.Controls(a).Top * ratioy
frmName.Controls(a).Left = frmName.Controls(a).Left * ratiox
frmName.Controls(a).ScaleHeight = frmName.Controls(a).ScaleHeight * ratioy
frmName.Controls(a).ScaleWidth = frmName.Controls(a).ScaleWidth * ratiox
ElseIf TypeOf frmName.Controls(a) Is Toolbar Then
frmName.Controls(a).ButtonHeight = frmName.Controls(a).ButtonHeight * ratioy
frmName.Controls(a).ButtonWidth = frmName.Controls(a).ButtonWidth * ratiox
frmName.Controls(a).Width = frmName.Controls(a).Width * ratiox
frmName.Controls(a).Height = frmName.Controls(a).Height * ratioy
frmName.Controls(a).Top = frmName.Controls(a).Top * ratioy
frmName.Controls(a).Left = frmName.Controls(a).Left * ratiox
ElseIf TypeOf frmName.Controls(a) Is MSFlexGrid Then
frmName.Controls(a).ColWidth = frmName.Controls(a).ColWidth * ratiox
frmName.Controls(a).RowHeight = frmName.Controls(a).RowHeight * ratioy
frmName.Controls(a).Width = frmName.Controls(a).Width * ratiox
frmName.Controls(a).Height = frmName.Controls(a).Height * ratioy
frmName.Controls(a).Top = frmName.Controls(a).Top * ratioy
frmName.Controls(a).Left = frmName.Controls(a).Left * ratiox
Else
frmName.Controls(a).Width = frmName.Controls(a).Width * ratiox
frmName.Controls(a).Height = frmName.Controls(a).Height * ratioy
frmName.Controls(a).Top = frmName.Controls(a).Top * ratioy
frmName.Controls(a).Left = frmName.Controls(a).Left * ratiox
End If
If frmName.Controls(a).Tag <> "" Then
movetype = Left(frmName.Controls(a).Tag, 1)
moveamount = Mid(frmName.Controls(a).Tag, 2, Len(frmName.Controls(a).Tag))
Select Case movetype
Case "L"
frmName.Controls(a).Left = frmName.Controls(a).Left + moveamount
Case "T"
frmName.Controls(a).Top = frmName.Controls(a).Top + moveamount
Case "H"
frmName.Controls(a).Height = frmName.Controls(a).Height + moveamount
Case "W"
frmName.Controls(a).Width = frmName.Controls(a).Width + moveamount
End Select
End If
poi stampi
poi lo rimetti normale