登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

樱之花

叶散的时候,你明白欢聚;花谢的时候,你明白青春.

 
 
 

日志

 
 
关于我

分类中“我的实验室”是我在日常工作中的一些知识总结,有些写的比较匆忙,可能大家在阅读时会产生困扰,后期有时间我会重新整理编辑,谢谢大家的到访,您们的支持是我前进的动力!

如何根据窗体的大小动态调整控件的大小  

2007-03-14 14:50:26|  分类: Visual Basic |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
转csdn 的 starsoulxp(星魂)
在程序的使用中,如果用户点击最大化或调整窗体的时候,窗体的控件依然不变化,非常不好看,所以我将这段源码贴上,供参考! 

  Option   Explicit  
  Private   ObjOldWidth   As   Long     '保存窗体的原始宽度  
  Private   ObjOldHeight   As   Long   '保存窗体的原始高度  
  Private   ObjOldFont   As   Single   '保存窗体的原始字体比  
   
  '在调用ResizeForm前先调用本函数  
  Public   Sub   ResizeInit(FormName   As   Form)  
      Dim   Obj   As   Control  
       
      ObjOldWidth   =   FormName.ScaleWidth  
      ObjOldHeight   =   FormName.ScaleHeight  
      ObjOldFont   =   FormName.Font.Size   /   ObjOldHeight  
      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函数  
  Public   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   /   ObjOldWidth  
      '保存窗体宽度缩放比例  
      ScaleY   =   FormName.ScaleHeight   /   ObjOldHeight  
      '保存窗体高度缩放比例  
      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  
              Obj.Font.Size   =   ObjOldFont   *   FormName.ScaleHeight  
          Next   i  
       
      Next   Obj  
       
      On   Error   GoTo   0  
  End   Sub  
   
  Private   Sub   Form_Resize()  
      '确保窗体改变时控件随之改变  
      Call   ResizeForm(Me)  
  End   Sub  
   
  Private   Sub   Form_Load()  
      '在程序装入时必须加入  
      Call   ResizeInit(Me)  
  End   Sub  
  评论这张
 
阅读(1368)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018