VB:所有控件自适应窗口大小
发布时间:2020-12-16 22:52:55 所属栏目:大数据 来源:网络整理
导读:Option Explicit Private FormOldWidth As Long ' 保存窗体的原始宽度 Private FormOldHeight As Long ' 保存窗体的原始高度 ' 在调用ResizeForm前先调用本函数 Private Sub ResizeInit(FormName As Form) Dim Obj As Control FormOldWidth = FormName.Scale
Option
Explicit
Private FormOldWidth As Long ' 保存窗体的原始宽度 Private FormOldHeight As Long ' 保存窗体的原始高度 ' 在调用ResizeForm前先调用本函数 Private 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 ' 按比例改变表单内各元件的大小,在调用ReSizeForm前先调用ReSizeInit函数 Private 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 ' 开发软件时候,把这个modal装入程序中.然后加入如下代码: Private Sub Form_Load() Call ResizeInit( Me) ' 在程序装入时必须加入 End Sub Private Sub Form_Resize() Call ResizeForm( Me) ' 确保窗体改变时控件随之改变 End Sub (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |