activex control formResizer in CSDN download channel
'这个加在模块里 Public FormOldWidth As Long Public FormOldHeight As Long Public Sub ResizeInit(FormName As Form) '记录窗体及各控件原始位置及尺寸 Dim Obj As ControlFormOldWidth = FormName.ScaleWidth FormOldHeight = FormName.ScaleHeightOn Error Resume Next For Each Obj In FormName Obj.Tag = Obj.Left & " " & Obj.Top & " " & Obj.Width & " " & Obj.Height & " " Next Obj End SubPublic Sub ResizeForm(FormName As Form) '当窗体大小发生变化时,各控件尺寸及位置作相应变化 Dim Pos '控件原先尺寸、位置 Dim I As Long '计数器 Dim Obj As Control '遍历窗体内控件 Dim ScaleX As Double, ScaleY As Double '缩放比例ScaleX = FormName.ScaleWidth / FormOldWidthScaleY = FormName.ScaleHeight / FormOldHeightOn Error Resume NextFor Each Obj In FormName Pos = Split(Obj.Tag, " ", , vbTextCompare) Obj.Move Pos(0) * ScaleX, Pos(1) * ScaleY, Pos(2) * ScaleX, Pos(3) * ScaleY Next Obj End SubPublic Sub AdjustForm(ScaleX As Single, ScaleY As Single, frm As Form) Dim s As Object On Error Resume Next For Each s In frm.Controls s.Left = s.Left * ScaleX s.Top = s.Top * ScaleY s.Width = s.Width * ScaleX s.Height = s.Height * ScaleY Next End Sub'以下加在你的form窗口里。Private Sub Form_Load() Call ResizeInit(Me) End SubPrivate Sub Form_Resize() Call ResizeForm(Me) End Sub
控件也相应调整位置,代码肯定要写,如果不写代码,机器是不会听话的。^_^
http://vbboshi.myrice.com/vbtech/interface/page_2/file45.htm
Public FormOldWidth As Long
Public FormOldHeight As Long
Public Sub ResizeInit(FormName As Form) '记录窗体及各控件原始位置及尺寸
Dim Obj As ControlFormOldWidth = FormName.ScaleWidth
FormOldHeight = FormName.ScaleHeightOn Error Resume Next
For Each Obj In FormName
Obj.Tag = Obj.Left & " " & Obj.Top & " " & Obj.Width & " " & Obj.Height & " "
Next Obj
End SubPublic Sub ResizeForm(FormName As Form) '当窗体大小发生变化时,各控件尺寸及位置作相应变化
Dim Pos '控件原先尺寸、位置
Dim I As Long '计数器
Dim Obj As Control '遍历窗体内控件
Dim ScaleX As Double, ScaleY As Double '缩放比例ScaleX = FormName.ScaleWidth / FormOldWidthScaleY = FormName.ScaleHeight / FormOldHeightOn Error Resume NextFor Each Obj In FormName
Pos = Split(Obj.Tag, " ", , vbTextCompare)
Obj.Move Pos(0) * ScaleX, Pos(1) * ScaleY, Pos(2) * ScaleX, Pos(3) * ScaleY
Next Obj
End SubPublic Sub AdjustForm(ScaleX As Single, ScaleY As Single, frm As Form)
Dim s As Object
On Error Resume Next
For Each s In frm.Controls
s.Left = s.Left * ScaleX
s.Top = s.Top * ScaleY
s.Width = s.Width * ScaleX
s.Height = s.Height * ScaleY
Next
End Sub'以下加在你的form窗口里。Private Sub Form_Load()
Call ResizeInit(Me)
End SubPrivate Sub Form_Resize()
Call ResizeForm(Me)
End Sub