哪位大侠能告诉我,在VB中如何让窗体的大小随着显示的尺寸或者分辨率的调整而自动调整大小。

解决方案 »

  1.   

    调用api即可实现。
    需要先用函数检测当前的屏幕的分辨率,然后将程序窗体尺寸定义为当前屏幕尺寸即可。
      

  2.   

    那些只是虚话,比较难以做到,偶也碰到这样的问题,解决办法如下:
    1.如果觉得在1024*768分辨率下,你的窗体大小不能放下你的控件时,把你的方便率调到最大(液晶显示器可调到1280*1024),偶就是这样做的,这样可以放下所有的控件;
    2.在上述方便率下,在空白窗体上加上一个picture或者frame控件与窗体同样大,并在右侧和下面加上vscroll和hscroll控件;
    3.把你要添加的所有控件放到picture或者frame控件——这个容器内,再到低分辩率内调试程序代码,如果现实不全用vscroll和hscroll控件分别拉开就可以了;
    4.在上述方法下实现的功能类似一个网页浏揽器一样,把picture或者frame控件——这个容器内的所有控件都能看到了!——上面写的思路有的乱,偶也是解决了很久,发了很多分分才解决的很好的:)还有你说的“自动调整大小。”——网上有这样的代码,但是你所添加的第三方控件就不能自动调整,我的mschart就调整不了,非常麻烦。常用的比如text、label等控件,自动调整起来还是可以的!
    楼主想要代码——可要多发分噢——嘿嘿
      

  3.   

    引用高手的代码
    lihonggen0(李洪根,MS MVP,标准答案来了)回复于 2003-04-22 11:07:30 得分 40
     在Form_Load中调用ResizeInit   
      在Form_Resize中调用ResizeForm   
        
        
        
      '写成模块ModFormResize   
      public   FormOldWidth   as   long   
      public   FormOldHeight   as   long   
        
      public   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   
      End   Sub   
        
      public   Sub   ResizeForm(FormName   as   form)     '当窗体大小发生变化时,各控件尺寸及位置作相应变化   
      Dim   Pos         '控件原先尺寸、位置   
      Dim   I   As   Long     '计数器   
      Dim   Obj   As   Control       '遍历窗体内控件   
      Dim   ScaleX   As   Double,   ScaleY   As   Double       '缩放比例   
        
      ScaleX   =   Me.ScaleWidth   /   FormOldWidth   
        
      ScaleY   =   Me.ScaleHeight   /   FormOldHeight   
        
      On   Error   Resume   Next   
        
      For   Each   Obj   In   Me   
              Pos   =   Split(Obj.Tag,   "   ",   ,   vbTextCompare)   
              Obj.Move   Pos(0)   *   ScaleX,   Pos(1)   *   ScaleY,   Pos(2)   *   ScaleX,   Pos(3)   *   ScaleY   
      Next   Obj   
      End   Sub