加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

VB控件随窗体最大化变化方法

(2023-08-11 14:45:48)
分类: VB程式
''''''''''''''''''''''''以下放在模块中
Option Explicit
Private FormOldWidth   As Long          '保存窗体的原始宽度
Private FormOldHeight  As Long          '保存窗体的原始高度

Public Sub ResizeInit(FormName As Form)   '在调用ResizerForm前先调用本函数

    'On Error Resume Next
    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
End Sub


Public Sub ResizeForm(FormName As Form)  '按比例改变表单内各元件的大小,在调用ResizerForm前先调用ResizerInit函数
    'On Error Resume Next
    Dim Pos() As String
    Dim Obj As Control
    Dim SX As Double, SY As Double
    SX = FormName.ScaleWidth / FormOldWidth          '保存窗体宽度缩放比例
    SY = FormName.ScaleHeight / FormOldHeight        '保存窗体高度缩放比例
    For Each Obj In FormName
        If Len(Obj.Tag) > 0 Then
            Pos = Split(Obj.Tag, " ")
            If TypeOf Obj Is ComboBox Or TypeOf Obj Is DriveListBox Then
                Obj.Move Pos(0) * SX, Pos(1) * SY, Pos(2) * SX
            Else
                    '根据控件的原始位置及窗体改变大小的比例对控件重新定位与改变大小

                Obj.Move Pos(0) * SX, Pos(1) * SY, Pos(2) * SX, Pos(3) * SY    
            End If
        End If
    Next Obj
End Sub



'''''''''''''''''''以下在窗体
Private Sub Form_Load()
Call ResizeInit(Me)    '确保窗体改变时控件随之改变
End Sub


Private Sub Form_Resize()
ResizeForm Me      '控件随之改变
End Sub

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有