Home >Computer Tutorials >Computer Knowledge >The type of the VB control size adaptive function does not meet the requirements!
Add a module
Option Explicit
Dim FormOldWidth As Long 'The old width value of the form
Dim FormOldHeight As Long 'The old height value of the form
Public Sub ResizeInit(FormName As Form)
Dim pCtl As Control
'Set the old height and width of the form
FormOldWidth = FormName.ScaleWidth
FormOldHeight = FormName.ScaleHeight
On Error Resume Next
For Each pCtl In FormName
'Set the Tag value of the control in the form (set according to the position and size of the space)
'Returns or sets an expression that stores additional data needed by the program.
'Unlike other properties, Visual Basic does not use the value of the Tag property;
'Use this attribute to identify the object.
pCtl.Tag = pCtl.Left & " ” & pCtl.Top & " ” & pCtl.Width & " ” & pCtl.Height & " ”
Next pCtl
On Error GoTo 0
End Sub
Public Sub ResizeForm(FormName As Form)
Dim Pos(4) As Double
Dim i As Long, tmpPos As Long, staPos As Long
Dim pCtl As Control
Dim ScaleX As Double, ScaleY As Double
'Save the width and height scaling ratio of the form
ScaleX = FormName.ScaleWidth / FormOldWidth
ScaleY = FormName.ScaleHeight / FormOldHeight
On Error Resume Next
'Change the controls in the form
For Each pCtl In FormName
staPos = 1
For i = 0 To 4 'Position and size
'Get the original position and size of the control
tmpPos = InStr(staPos, pCtl.Tag, " ", vbTextCompare)
If tmpPos > 0 Then
Pos(i) = Mid(pCtl.Tag, staPos, tmpPos - staPos)
staPos = tmpPos 1
Else
Pos(i) = 0
End If
'Change the size based on the original position of the control and the form
'Proportional repositioning and resizing of controls
pCtl.Move Pos(0) * ScaleX, Pos(1) * ScaleY, Pos(2) * ScaleX, Pos(3) * ScaleY
Next i
Next pCtl
On Error GoTo 0
End Sub
Add code in Form
Private Sub Form_Load()
Call ResizeInit(Me)
End Sub
'When the size of the form changes, change the size according to the proportion of the form
'Reposition and change the size of each control in the form.
Private Sub Form_Resize()
Call ResizeForm(Me)
End Sub
Then put a few controls in the form and try changing the size of the form
Control adaptive form:
Dim oldheight&, oldwidth&
Private Sub Form_Load()
oldheight = Me.Height: oldwidth = Me.Width
End Sub
Private Sub Form_Resize()
Dim cnt As Control
For Each cnt In Controls
cnt.Width = cnt.Width * Me.Width / oldwidth
cnt.Height = cnt.Height * Me.Height / oldheight
Next
oldheight = Me.Height: oldwidth = Me.Width
End Sub
The above is the detailed content of The type of the VB control size adaptive function does not meet the requirements!. For more information, please follow other related articles on the PHP Chinese website!