找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5424|回复: 8
收起左侧

VB:所有控件自适应窗口大小 .

[复制链接]
ID:127229 发表于 2016-6-19 16:29 | 显示全部楼层 |阅读模式
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

回复

使用道具 举报

ID:200118 发表于 2017-5-18 19:51 | 显示全部楼层
很好,学习
回复

使用道具 举报

ID:241242 发表于 2017-11-16 16:47 | 显示全部楼层
非常棒
回复

使用道具 举报

ID:241242 发表于 2017-12-8 09:09 | 显示全部楼层
太好了,亲测好用
回复

使用道具 举报

ID:64765 发表于 2019-3-16 14:10 | 显示全部楼层
谢谢分享。
回复

使用道具 举报

ID:681272 发表于 2020-1-10 05:19 | 显示全部楼层
谢谢分享。
回复

使用道具 举报

ID:702600 发表于 2020-3-25 09:51 | 显示全部楼层
谢谢分享,刚好需要。
回复

使用道具 举报

ID:64765 发表于 2020-3-28 14:43 | 显示全部楼层
好资料,学习了,谢谢分享。以前搞过VB,再学习一下,很好。
回复

使用道具 举报

ID:298008 发表于 2020-3-29 18:38 | 显示全部楼层
谢谢楼主分享!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表