这是一个类模块:
1. 建立一个新的类模块,加入下列代码,并给类模块起名(例:autosize)
2. 加入一个窗口并且加入:Private el as new autosize
3. 在 Form_Load 事件中加入 el.init me
4. 在 Form_Resize 事件中加入 el.formresize me
Option Explicit Private nFormHeight As Integer Private nFormWidth As Integer Private nNumOfControls As Integer Private nTop() As Integer Private nLeft() As Integer Private nHeight() As Integer Private nWidth() As Integer Private nFontSize() As Integer Private nRightMargin() As Integer Private bFirstTime As Boolean
Sub Init(frm As Form, Optional nWindState As Variant) Dim I As Integer Dim bWinMax As Boolean bWinMax = Not IsMissing(nWindState) nFormHeight = frm.Height nFormWidth = frm.Width nNumOfControls = frm.Controls.Count - 1 bFirstTime = True ReDim nTop(nNumOfControls) ReDim nLeft(nNumOfControls) ReDim nHeight(nNumOfControls) ReDim nWidth(nNumOfControls) ReDim nFontSize(nNumOfControls) ReDim nRightMargin(nNumOfControls) On Error Resume Next For I = 0 To nNumOfControls If TypeOf frm.Controls(I) Is Line Then nTop(I) = frm.Controls(I).Y1 nLeft(I) = frm.Controls(I).X1 nHeight(I) = frm.Controls(I).Y2 nWidth(I) = frm.Controls(I).X2 Else nTop(I) = frm.Controls(I).Top nLeft(I) = frm.Controls(I).Left nHeight(I) = frm.Controls(I).Height nWidth(I) = frm.Controls(I).Width nFontSize(I) = frm.FontSize nRightMargin(I) = frm.Controls(I).RightMargin End If Next If bWinMax Or frm.WindowState = 2 Then frm.Height = Screen.Height frm.Width = Screen.Width Else frm.Height = frm.Height * Screen.Height / 7290 frm.Width = frm.Width * Screen.Width / 9690 End If bFirstTime = True End Sub
Sub FormResize(frm As Form) Dim I As Integer Dim nCaptionSize As Integer Dim dRatioX As Double Dim dRatioY As Double Dim nSaveRedraw As Long On Error Resume Next nSaveRedraw = frm.AutoRedraw frm.AutoRedraw = True If bFirstTime Then bFirstTime = False Exit Sub End If If frm.Height < nFormHeight / 2 Then frm.Height = nFormHeight / 2 Endif If frm.Width < nFormWidth / 2 Then frm.Width = nFormWidth / 2 Endif nCaptionSize = 400 dRatioY = 1# * (nFormHeight - nCaptionSize) _ / (frm.Height - nCaptionSize) dRatioX = 1# * nFormWidth / frm.Width On Error Resume Next For I = 0 To nNumOfControls If TypeOf frm.Controls(I) Is Line Then frm.Controls(I).Y1 = Int(nTop(I) / dRatioY) frm.Controls(I).X1 = Int(nLeft(I) / dRatioX) frm.Controls(I).Y2 = Int(nHeight(I) / dRatioY) frm.Controls(I).X2 = Int(nWidth(I) / dRatioX) Else frm.Controls(I).Top = Int(nTop(I) / dRatioY) frm.Controls(I).Left = Int(nLeft(I) / dRatioX) frm.Controls(I).Height = Int(nHeight(I) / dRatioY) frm.Controls(I).Width = Int(nWidth(I) / dRatioX) frm.Controls(I).FontSize = Int(nFontSize(I) / _ dRatioX) + Int(nFontSize(I) / dRatioX) Mod 2 frm.Controls(I).RightMargin = Int(nRightMargin(I) / dRatioY) End If Next frm.AutoRedraw = nSaveRedraw End Sub
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/
领测软件测试网最新更新
关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073










