VB6.0自动调整窗口布局

2024-07-10 22:58:20
推荐回答(2个)
回答1:

Public Sub ResizeInit(cForm As Form)
'函数说明:用于窗体加载时初散哗乎始化
'传入参数:cForm-窗体对象

Dim fWidth As Single '记录当前控件冲悉所处于的容器的宽度
Dim fHeight As Single '记录当前控件所处于的容器的高度
Dim fObj As Control

On Error Resume Next

For Each fObj In cForm
fWidth = fObj.Container.Width
fHeight = fObj.Container.Height

fObj.Tag = fWidth & " " & fHeight & " " & fObj.Left & " " & fObj.Top & " " & fObj.Width & " " & fObj.Height
Next

End Sub

Public Sub ResizeForm(cForm As Form)
'函数说明:更改控件位置
'传入参数:cForm-窗体对芦碧象

Dim xSingle As Single
Dim ySingle As Single

Dim Pos As Variant
'此句是防止窗体在最大化最小时,出现刷新操作浪费时间(更重要的是我在组态中
'当最大化,最小化时,刷新组态里面的控件会出错,所以加上此句)
If cForm.WindowState <> 0 Then Exit Sub

On Error Resume Next

For Each fObj In cForm
Pos = Split(fObj.Tag, " ")
xSingle = fObj.Container.Width / Pos(0)
ySingle = fObj.Container.Height / Pos(1)

fObj.FontSize = fObj.FontSize / ySingle

If TypeOf fObj Is ComboBox Then '当控件为ComboBox,此控件不能改变高度,单独处理
fObj.Left = Pos(2) * xSingle
fObj.Top = Pos(3) * ySingle
fObj.Width = Pos(4) * xSingle
Else
fObj.Move Pos(2) * xSingle, Pos(3) * ySingle, Pos(4) * xSingle, Pos(5) * ySingle
End If
Next

End Sub

在窗体加载时调用

ResziseInit me

窗体的Resize事件中调用

ResziseForm me

回答的好的话给点分吧!

回答2:

'不此族用管屏幕分辨率。
'在属性窗口将窗体的 StartUpPosition 设置为 2,森笑弊即屏幕居中升芹。
'下面代码将窗体大小设置为屏幕大小的 80%
Private Sub Form_Load()
Me.Move 0, 0, Screen.Width * 0.8, Screen.Height * 0.8
End Sub