by Julito Amodia (8 Submissions)
Category: Custom Controls/Forms/Menus
Compatability: VB 6.0
Difficulty: Unknown Difficulty
Originally Published: Wed 17th May 2006
Date Added: Mon 8th February 2021
Rating:
(1 Votes)
This will Resize your controls automatically when everytime the form resize. it will also prevent the controls for resizing. this is useful in
API Declarations
'''Put this code on the form_load event
G_P_AdjustFormon
'''Put this code on the form_Resize event
G_P_FormResize
Option Explicit
Public Xtwips As Integer, Ytwips As Integer
Public Xpixels As Integer, Ypixels As Integer
Type FRMSIZE
Height As Long
Width As Long
End Type
Public RePosForm As Boolean
Public DoResize As Boolean
Dim MyForm As FRMSIZE
Dim DesignX As Integer
Dim DesignY As Integer
Dim ScaleFactorX As Single, ScaleFactorY As Single
Sub Resize_For_Resolution(ByVal SFX As Single, ByVal SFY As Single, MyForm As Form)
Dim i As Integer
Dim SFFont As Single
SFFont = (SFX + SFY) / 2.2
On Error Resume Next
With MyForm
For i = 0 To .Count - 1
If TypeOf .Controls(i) Is DataGrid Then
.Controls(i).Left = .Controls(i).Left * SFX
.Controls(i).Top = .Controls(i).Top * SFY
.Controls(i).Width = .Controls(i).Width * SFX
ElseIf TypeOf .Controls(i) Is Label Then
.Controls(i).Move .Controls(i).Left * SFX, _
.Controls(i).Top * SFY, _
.Controls(i).Width * SFX, _
.Controls(i).Height
ElseIf TypeOf .Controls(i) Is CommandButton Then
.Controls(i).Move .Controls(i).Left * SFX, _
.Controls(i).Top * SFY, _
.Controls(i).Width * SFX, _
.Controls(i).Height
Else
.Controls(i).Move .Controls(i).Left * SFX, _
.Controls(i).Top * SFY, _
.Controls(i).Width * SFX, _
.Controls(i).Height * SFY
End If
' If TypeOf .Controls(i) Is vaSpread Then
' ' .Controls(i).FontSize = .Controls(i).FontSize * SFFont
' Else
' .Controls(i).FontSize = .Controls(i).FontSize * SFFont
' End If
Next i
If RePosForm Then
.Move .Left * SFX, .Top * SFY, .Width * SFX, .Height * SFY
End If
End With
End Sub
Public Sub G_P_FormResize(TheForm As Form)
Dim ScaleFactorX As Single, ScaleFactorY As Single
If Not DoResize Then
DoResize = True
Exit Sub
End If
RePosForm = False
ScaleFactorX = TheForm.Width / MyForm.Width
ScaleFactorY = TheForm.Height / MyForm.Height
Resize_For_Resolution ScaleFactorX, ScaleFactorY, TheForm
MyForm.Height = TheForm.Height
MyForm.Width = TheForm.Width
End Sub
Public Sub G_P_AdjustForm(TheForm As Form, Optional DX As Integer = 640, Optional DY As Integer = 480)
Dim Res As String ' Returns resolution of system
' Put the design time resolution in here
' provide DX , DY as design time resolution of form
' i.e. the resulution of Programmers Machine
DesignX = DX
DesignY = DY
RePosForm = True
DoResize = False
Xtwips = Screen.TwipsPerPixelX
Ytwips = Screen.TwipsPerPixelY
Ypixels = Screen.Height / Ytwips
Xpixels = Screen.Width / Xtwips
ScaleFactorX = (Xpixels / DesignX)
ScaleFactorY = (Ypixels / DesignY)
TheForm.ScaleMode = 1
Resize_For_Resolution ScaleFactorX, ScaleFactorY, TheForm
Res = Str$(Xpixels) + " by " + Str$(Ypixels)
'Debug.Print Res
MyForm.Height = TheForm.Height
MyForm.Width = TheForm.Width
End Sub
No comments have been posted about This will Resize your controls automatically when everytime the form resize. it will also prevent t. Why not be the first to post a comment about This will Resize your controls automatically when everytime the form resize. it will also prevent t.