在1024*768下写的窗体在800*600下有些无法看到。
能否有较为通用的手段,不要针对不同窗体而写不同代码!

解决方案 »

  1.   

    在form1的resize事件中写代码比如text1.width=form1.scalewidth
      

  2.   

    让你的form跟screen一样宽,高,
    控件也相应调整位置,代码肯定要写,如果不写代码,机器是不会听话的。^_^
      

  3.   

    9494按件多了要死人的,是不是可以用CONTRAL对象?有人会吗?最好有例子
      

  4.   

    用VB5.0 设计能适应各种显示属性下的界面
    http://vbboshi.myrice.com/vbtech/interface/page_2/file45.htm
      

  5.   

    activex control formResizer in CSDN download channel
      

  6.   

    '这个加在模块里
    Public FormOldWidth As Long
    Public FormOldHeight As Long
    Public Sub ResizeInit(FormName As Form)   '记录窗体及各控件原始位置及尺寸
    Dim Obj As ControlFormOldWidth = FormName.ScaleWidth
    FormOldHeight = FormName.ScaleHeightOn Error Resume Next
    For Each Obj In FormName
        Obj.Tag = Obj.Left & " " & Obj.Top & " " & Obj.Width & " " & Obj.Height & " "
    Next Obj
    End SubPublic Sub ResizeForm(FormName As Form)  '当窗体大小发生变化时,各控件尺寸及位置作相应变化
    Dim Pos    '控件原先尺寸、位置
    Dim I As Long  '计数器
    Dim Obj As Control   '遍历窗体内控件
    Dim ScaleX As Double, ScaleY As Double   '缩放比例ScaleX = FormName.ScaleWidth / FormOldWidthScaleY = FormName.ScaleHeight / FormOldHeightOn Error Resume NextFor Each Obj In FormName
        Pos = Split(Obj.Tag, " ", , vbTextCompare)
        Obj.Move Pos(0) * ScaleX, Pos(1) * ScaleY, Pos(2) * ScaleX, Pos(3) * ScaleY
    Next Obj
    End SubPublic Sub AdjustForm(ScaleX As Single, ScaleY As Single, frm As Form)
        Dim s As Object
        On Error Resume Next
        For Each s In frm.Controls
            s.Left = s.Left * ScaleX
            s.Top = s.Top * ScaleY
            s.Width = s.Width * ScaleX
            s.Height = s.Height * ScaleY
        Next
    End Sub'以下加在你的form窗口里。Private Sub Form_Load()
    Call ResizeInit(Me)
    End SubPrivate Sub Form_Resize()
    Call ResizeForm(Me)
    End Sub
      

  7.   

    abc10 这位朋友的代码虽然不能很好的解决问题,但很有研究价值,大家都可以在他的基础上来深入,从而得到自己想要的结果。