Home >Computer Tutorials >Computer Knowledge >The type of the VB control size adaptive function does not meet the requirements!

The type of the VB control size adaptive function does not meet the requirements!

WBOY
WBOYforward
2024-01-14 13:54:171325browse

The type of the VB control size adaptive function does not meet the requirements!

VB control adaptive size function type does not match!

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

VB textbox control automatically adjusts as the form changes

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!

Statement:
This article is reproduced at:docexcel.net. If there is any infringement, please contact admin@php.cn delete