您现在的位置: 中国男护士网 >> 考试频道 >> 计算机等级 >> 二级辅导 >> VB >> 辅导 >> 正文    
  常见问题:自动调整窗口内控间的大小 【注册男护士专用博客】          

常见问题:自动调整窗口内控间的大小

www.nanhushi.com     佚名   不详 

  这是一个类模块:

  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

 

文章录入:杜斌    责任编辑:杜斌 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     

    联 系 信 息
    QQ:88236621
    电话:15853773350
    E-Mail:malenurse@163.com
    免费发布招聘信息
    做中国最专业男护士门户网站
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    没有相关文章
    专 题 栏 目

      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)                            【进男护士社区逛逛】
    姓 名:
    * 游客填写  ·注册用户 ·忘记密码
    主 页:

    评 分:
    1分 2分 3分 4分 5分
    评论内容:
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。