当form 的大小改变后,如后编程,使form上的控件布局和form 未改变一样,使空间布局匀称。

解决方案 »

  1.   

    form_resize中按比例设计控件布局和大小
      

  2.   

    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 Sub
      

  3.   

    能举个例子吗,比如只有一个command1控件
    请帮忙请代码
      

  4.   

    在form_load里调用ResizeInit
    在form_Resize里调用ResizeForm
      

  5.   

    不行呀,我用的是vb6.0
    FormName.ScaleWidth
    编译时出错
    溢出
    请帮忙
      

  6.   


    就是vb6的代码将上述的代码存为模块
    屏幕调用如下:Private Sub Form_Load()
    ResizeInit Form1
    End SubPrivate Sub Form_Resize()
    ResizeForm Form1
    End Sub
      

  7.   

    Resize 事件示例
    本例在任何调整窗体大小时的时候,都将自动调整一个 TextBox 控件的大小以填充该窗体。要尝试这个例子,可以将代码粘贴到包含 TextBox 的窗体声明部分。 设置 TextBox 控件的 MultiLine 属性为 True,ScrollBars 属性为 3,BorderStyle 属性为 0,然后按F5键并调整窗体大小。Private Sub Form_Load ()
       Text1.Text = ""   ' 清除文本。
    End SubPrivate Sub Form_Resize ()
       Text1.Move 0,0, ScaleWidth, ScaleHeight
    End Sub