控件随窗体大小改变而改变大小和位置

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-1 16:40   101   0

在敲系统时,每个窗体上都有很多控件,我们把控件和窗体位置搭配好,当我们改变窗体大小时,控件和窗体位置又不搭调了。那我们怎么办呢!我在网上找到一种方法,我个人也试了,可以让控件根据窗体的大小变化而变化。(此方法只能在XP中实现。)

Option Explicit
Private FormOldWidth As Long
'保存窗体的原始宽度
Private FormOldHeight As Long
'保存窗体的原始高度

Public Sub ResizeInit(FormName As Form)
    Dim Obj As Control
    FormOldWidth = FormName.ScaleWidth
    FormOldHeight = FormName.ScaleHeight
    On Error Resume Next
    For Each Obj In FormName
        Obj.Tag = Obj.Left & " " & Obj.Top & " " & Obj.Width & " " & Obj.Height & " "
    Next Obj
    On Error GoTo 0
End Sub

Public Sub ResizeForm(FormName As Form)
    Dim Pos(4) As Double
    Dim i      As Long, TempPos As Long, StartPos As Long
    Dim Obj    As Control
    Dim ScaleX As Double, ScaleY As Double

    ScaleX = FormName.ScaleWidth / FormOldWidth
    ScaleY = FormName.ScaleHeight / FormOldHeight
    On Error Resume Next
    For Each Obj In FormName
        StartPos = 1
        For i = 0 To 4
            TempPos = InStr(StartPos, Obj.Tag, " ", vbTextCompare)
            If TempPos > 0 Then
                Pos(i) = Mid(Obj.Tag, StartPos, TempPos - StartPos)
                StartPos = TempPos + 1
            Else
                Pos(i) = 0
            End If

            Obj.Move Pos(0) * ScaleX, Pos(1) * ScaleY, Pos(2) * ScaleX, Pos(3) * ScaleY
        Next i
    Next Obj
    On Error GoTo 0
End Sub
Private Sub Form_Resize()
    Call ResizeForm(Me) '确保窗体改变时控件随之改变
End Sub
Private Sub Form_Load()
    Call ResizeInit(Me) '在程序装入时加入
End sub


分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP