
1个回答
展开全部
要在Form_Resize事件中对象控件重新布置。
一般按窗体客户区大小的比率来设置,客户区尺寸属性是ScaleWidth,ScaleHeight。
预先在Form_Load事件中记录每个控件长宽,和x,y坐标与窗体的比率,可以把它们记在控件的Tag属性中。
比如:对picture1调整
private sub form_load()
picture1.tag=picture1.left/scalewidth & "," & picture1.top/scaleheight & "," & picture1.width/scalewidth & "," & picture1.height/scaleheight
end sub
private sub form_resize()
dim a
a=split(picture1.tag,",")
picture1.left=val(a(0))*scalewidth
picture1.top=val(a(1)) *scaleheight
picture1.width=val(a(2))*scalewidth
picture1.height=val(a(3))*scaleheight
end sub
'------------------------
'对窗体上所有控件调整
Private Sub form_load()
On Error Resume Next
Dim c As Control
For Each c In Controls
c.Tag = c.Left / ScaleWidth & "," & c.Top / ScaleHeight & "," & c.Width / ScaleWidth & "," & c.Height / ScaleHeight
Next
End Sub
Private Sub form_resize()
On Error Resume Next
Dim a
Dim c As Control
For Each c In Controls
a = Split(c.Tag, ",")
c.Left = Val(a(0)) * ScaleWidth
c.Top = Val(a(1)) * ScaleHeight
c.Width = Val(a(2)) * ScaleWidth
c.Height = Val(a(3)) * ScaleHeight
Next
End Sub
追问
可以追加注释吗?给你高分回报!
追答
Private Sub form_load()
On Error Resume Next
Dim c As Control
For Each c In Controls
c.Tag = c.Left / ScaleWidth & "," & c.Top / ScaleHeight & "," & c.Width / ScaleWidth & "," & c.Height / ScaleHeight
Next
'载入窗体时扫描每个控件,把控件的位置,尺寸和 窗口客户区尺寸的比例值存入该控件的Tag属性中。供重新调整时使用。tag中的字符串:“left值,top值,宽度,高度”
End Sub
Private Sub form_resize()
On Error Resume Next
Dim a
Dim c As Control
For Each c In Controls ’循环获得每个控件
a = Split(c.Tag, ",") ’ 把tag中的字符串分隔为数组
c.Left = Val(a(0)) * ScaleWidth ‘把left 比例值乘于新窗口窗户区宽度赋给left属性
c.Top = Val(a(1)) * ScaleHeight
c.Width = Val(a(2)) * ScaleWidth
c.Height = Val(a(3)) * ScaleHeight
Next
End Sub
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询