📄 module3.bas
字号:
Attribute VB_Name = "Module3"
Option Explicit
Type MyControl
mcName As String
mcTop As Single
mcLeft As Single
mcHeight As Single
mcWidth As Single
End Type
Type MyForm
mfID As Long
mfControl() As MyControl
End Type
Public MyFrm() As MyForm
'****************************************************
'函数说明:可以让多个窗体的控件随窗体的大小而改变。
'****************************************************
'调用代码:cResize(Me,Load用True Resize用False可以省略)
'****************************************************
Public Function cResize(frm As Form, Optional Install As Boolean = False) As Long
On Error Resume Next '窗体中有Combo、DriveList等控件时用到。
If frm.WindowState = 1 Then Exit Function '窗体最小化时略
Dim i As Long '控件的编号
Dim j As Long '窗体的编号
Dim Obj As Control '控件的集合
'********************************(Form_Load调用的代码)******************************
If Install = True Then
Static FrmID As Long
FrmID = FrmID + 1
ReDim Preserve MyFrm(FrmID) As MyForm
MyFrm(FrmID).mfID = frm.hWnd
For Each Obj In frm
i = i + 1
ReDim Preserve MyFrm(FrmID).mfControl(i) As MyControl
With MyFrm(FrmID).mfControl(i)
.mcName = Obj.Name
.mcLeft = Obj.Left / frm.ScaleWidth
.mcTop = Obj.Top / frm.ScaleHeight
.mcWidth = Obj.Width / frm.ScaleWidth
.mcHeight = Obj.Height / frm.ScaleHeight
End With
Next
Exit Function
End If
'********************************(Form_Resize调用的代码)****************************
For j = 1 To UBound(MyFrm)
If frm.hWnd = MyFrm(j).mfID Then Exit For
Next
For Each Obj In frm
For i = 1 To UBound(MyFrm(j).mfControl)
If Obj.Name = MyFrm(j).mfControl(i).mcName Then Exit For
Next
Obj.Left = MyFrm(j).mfControl(i).mcLeft * frm.ScaleWidth
Obj.Top = MyFrm(j).mfControl(i).mcTop * frm.ScaleHeight
Obj.Width = MyFrm(j).mfControl(i).mcWidth * frm.ScaleWidth
Obj.Height = MyFrm(j).mfControl(i).mcHeight * frm.ScaleHeight
Next
End Function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -