vb程序的窗体任意宿放,其中的控件,大小,位置,容器中的控件的(大小,位置),也自动跟着适应。Form_Resize时,界面的控件不能auto改变大小,来适应环境
我就是不知道原理和方法。我不想做的程序,都做成固定窗体要用到
.left,.width,.top,.height
ScaleWidth,ScaleHeight等属性。For Each Obj In FormName
Obj.Tag = Obj.Left & " " & Obj.Top & " " & Obj.Width & " " & Obj.Height & " "
Next Obj当form,拉动时,要用 move方法。

解决方案 »

  1.   

    大家共同研究Option Explicit
    Private FormOldWidth As Long
    '保存窗体的原始宽度
    Private FormOldHeight As Long
    '保存窗体的原始高度'在调用ResizeForm前先调用本函数
    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
    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 DoubleScaleX = 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 SubPrivate Sub Form_Load()
    Call ResizeInit(Me) '在程序装入时必须加入
    End SubPrivate Sub Form_Resize()
    Call ResizeForm(Me) '确保窗体改变时控件随之改变
    End Sub
      

  2.   

    好似有个API可以做!不过……
    不好意思我不记得是那个了!自已找下
      

  3.   

    留个EMail,我这有个控件,放在窗体上(运行时不显示)就可以了。能自动根据窗体大小调整窗体上所有控件的大小、位置,还有字体。
      

  4.   

    我要,这个控件。[email protected]
      

  5.   

    我也要,這樣的話我就可以改變不同分辯率下運行程式的問題啦[email protected],謝謝
      

  6.   


    这个控件是不是需要注册的?如果不用注册请上传到ftp://[email protected]谢谢~~
    还有,小弟要补充一点,2楼的做法是很好,但是也存在一个问题,就是在改变控件大小的同时,字体也会变,特别是如果有按钮,按钮也会变大,所以,还是用笨办法好一些,把那些大小和相对位置(比如窗体的下面)不变的控件放到一个Frame里,在Resize事件里写代码,一个控件一个控件的with,虽然麻烦,但是效果很好~那些需要变,那些不需要可以自己控制~
      

  7.   

    kissoflife(明月高楼休独倚,酒入愁肠,化作相思泪!:给我一个吧,挺好的:
    [email protected]
      

  8.   

    i want it
    [email protected]
      

  9.   

    所有控件都跟着窗口的大小缩放,效果看起来的确不怎么样,我觉得象 DotNet 中的 Dock 属性那样比较好,可以设定那些控件需要缩放,那些控件需要移动而不缩放,实际效果还是比较满意的。
    可是在VB中无法作控件的超类给每个控件添加一个 Dock 属性,所以我的思路是作一个容器控件 DockPanel,DockPanel 有一个PropertyPage,在PropertyPage中列出该 Panel中的所有控件,并可设置每个控件的 Dock 属性,和 DotNet中一样,每个控件可以设定上、下、左、右四边对齐,这几种对齐方式的组合就能够得到比较满意的效果了,例如:
    下、右对齐,则控件的大小不变,位置随容器变化,但总是保持相对右下脚位置不变
    上、下对齐,则控件的位置不变,高度随容器的高度变化
    左、右对齐,则控件的位置不变,宽度随容器宽度变化
    等等
      

  10.   

    用了楼二的代码,发现一个问题,就是在窗体中加了SSTab控件,窗体自动放大或变小,sstbab默认激活的页的控件都能显示,点换到别的页,上面容的控件一个都显示不出来。
    楼二,好像少了一段代码?
      

  11.   

    已发送到下列朋友:
    [email protected];
    [email protected];
    [email protected];
    [email protected];
    [email protected];
    [email protected];
    [email protected]
    如有“漏网之鱼”:),请留言。
      

  12.   

    [email protected]
    不好意思,小弟晚了一步。
    还望能在发下,多谢了!
      

  13.   

    发过去的总共有三个文件,其中一个名为“RESIZOCX.LIC”
    的文件就是许可证,千万不能丢了。记得把这三个文件都拷贝到系统目录(system32)下面。
      

  14.   

    可以给我一份吗?[email protected]谢啦
      

  15.   

    我来晚了,就只能等着晚上和大家一起来分享了!俺的EMail: [email protected]
    或是:[email protected]谢谢
      

  16.   

    kissoflife(明月高楼休独倚,酒入愁肠,化作相思泪!:给我一个吧,挺好的
    [email protected]
    [email protected]
      

  17.   

    我也要,谢谢!
    [email protected]
      

  18.   

    i too Thanks!!
    [email protected]
      

  19.   

    已发送到下列朋友:
    [email protected];
    [email protected];
    [email protected];
    [email protected];
    [email protected];
    [email protected];
    [email protected];
    [email protected];
    [email protected]
    to  TalentLi(▁▂▃▄▅ 天才的我 ▆▅▄▃▂▁) 
    不需要注册,但你提供的ftp无法登陆
      

  20.   

    给我一个谢谢。
    [email protected]
      

  21.   

    明月,请给我一份吧。
    [email protected]