如果子窗体不是max的话,基本上很难!如果是max那么自动同步放大!

解决方案 »

  1.   

    我的 部分代码:
    =======================================
    Private Sub MDIForm_Activate()
        MDIForm_Resize
    End Sub' Make the image fit the MDI form.
    Private Sub MDIForm_Resize()
        picStretched.Move 0, 0, _
            ScaleWidth, ScaleHeight    ' Copy the original picture into picStretched.
        picStretched.PaintPicture _
            picOriginal.Picture, _
            0, 0, _
            picStretched.ScaleWidth, _
            picStretched.ScaleHeight, _
            0, 0, _
            picOriginal.ScaleWidth, _
            picOriginal.ScaleHeight
            
        ' Set the MDI form's picture.
        Picture = picStretched.Image
    End Sub
      

  2.   

    菜鸟挠挠头,
    问:MDIForm_Resize()
    不行吗?
      

  3.   

    其实如果没有特殊的要求。
    一般不用MDI。
      

  4.   

    Delphi就不用写,有属性一设就行
    Very Easy
    VB就没有(除了picture等容器)
      

  5.   

    一劳永逸让VB自动改变控件大小 -- 当窗体大小改变时,如何动态的改变控件的大小是许多VB程序员头痛的事。有的人设置窗体Resizable但却不改变控件的大小;有的人则根据控件的绝对位置与窗口大小相加减的办法来重新定位控件与改变大小,这种办法比较繁琐,且不可重用;当然也有人则限定窗口干脆不让改变。有没有一种简便易行的办法?答案是肯定的,下面给出一个一劳永逸的办法,源程序如下: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
    `根据控件的原始位置及窗体
      

  6.   

    zbhuang(网事如风) ,你的代码好象没有贴完呢。再说,我认为,按比例缩放控件,在一般情况下,并非我们RESIZE窗体时
    所希望看到的效果。何况,有些控件的大小根本就不能变,例如COMBOBOX
    的高度。我对于这个问题的解决方法是,为窗体上每个需要在RESIZE时变动的控件
    定制其在窗体RESIZE时的行为。按比例变化只是行为方式的一种。当然,我的意思并不是在FORM_RESIZE事件中写很多代码。其实只要你把
    这些操作封装在一个类模块中,由该类来接管FORM_RESIZE事件,那么就
    可以在FORM_LOAD时为每个控件设定一下就可以了。
      

  7.   

    在窗体加载、最小化时都会引发resize事件,如果在这时也调用函数改变控件大小的话会出乱子的。