当前位置:编程学习 > VB >>

如何让这些控件大小都随窗体的改变而改变

请教高手,在窗口(窗口里的图片设为铺满窗体)设计里的如下控件,Label1、Label2、Command1、Command2、Command3,如何让这些控件大小都随窗体的改变而改变 --------------------编程问答-------------------- 以下代码保存到ModAutoSize:

'*************************************************************************
'**模 块 名:ModAutoSize
'**说    明:自动调整窗体控件大小及位置
'**创 建 人:马大哈 紫水晶工作室 版权所有
'**日    期:2003年12月17日
'**备    注: 摘于网络
'**版    本:V1.0
'*************************************************************************
''   在Form_Load里面调用:
''               ControlAutoSize Me,0
''   在Form_Resize里面调用:
''               ControlAutoSize Me,1
''**********************************
'
Option Explicit

Private Type cP
  Wp As Single
  Hp As Single
  Tp As Single
  Lp As Single
End Type
Dim Ap() As cP

Private Sub Ai(ByRef mForm As Form)
    On Error Resume Next
    Dim I As Integer
    For I = 0 To mForm.Controls.Count - 1
          With Ap(I)
                .Wp = mForm.Controls(I).Width / mForm.Width
                .Hp = mForm.Controls(I).Height / mForm.Height
                .Lp = mForm.Controls(I).Left / mForm.Width
                .Tp = mForm.Controls(I).top / mForm.Height
          End With
    Next I
End Sub

Public Function ControlAutoSize(ByRef mForm As Form, ByVal OptIndex As Long)
    Select Case OptIndex
        Case 0
            mForm.Height = mForm.ScaleHeight
            ReDim Ap(0 To mForm.Controls.Count - 1)
            Call Ai(mForm)
        Case Else
            Dim I As Integer
            
            On Error Resume Next
            With mForm
                For I = 0 To .Controls.Count - 1
                    .Controls(I).Move Ap(I).Lp * .ScaleWidth, _
                                     Ap(I).Tp * .ScaleHeight, _
                                     Ap(I).Wp * .ScaleWidth, _
                                     Ap(I).Hp * .ScaleHeight
                Next I
            End With
    End Select
End Function
--------------------编程问答-------------------- 老马 的这个模块很经典啊! 非常实用 

^_^ --------------------编程问答-------------------- 一_一b摘于网络...不是我写的...

我没有这样的需求....

多数情况下,界面搞成这种效果会很难看的. --------------------编程问答-------------------- mark
老马有收到送你的可用分了么 --------------------编程问答-------------------- 收到了~~~~~感谢呀~~~~不过被CSDN抽了100的成,哈哈. --------------------编程问答-------------------- 我是懒得散呢 知道你喜欢散分给大家哈 --------------------编程问答-------------------- 没办法~~VB版没什么人气~~

用我的分把人气顶起来吧....

社区嘛,就是要人多才热闹... --------------------编程问答-------------------- 我都是在Form_Resize()事件中,用代码一句句重新设置的

--------------------编程问答-------------------- 根据自己在画好了的控件中 计算百分比
主要计算

控件.top/窗体.height
控件.left/窗体.width
控件.height/窗体.height
控件.width/窗体.width
计算出来后 就这样写

Private Sub Form_Resize()
With Command1
.Left = ScaleHeight * 0.5
.Top = ScaleWidth * 0.1
.Height = ScaleHeight * 0.5
.Width = ScaleWidth * 0.5
End With
End Sub

只要最开始算一次百分比
补充:VB ,  基础类
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,