把以下代碼放到窗體中,然后可以在窗體隨便添加控件。別謝我,我也是抄來的。Option Explicit Private ObjOldWidth As Long '保存表單的原始寬度 Private ObjOldHeight As Long '保存表單的原始高度 Private ObjOldFont As Single '保存表單的原始字體比'在調用ResizeForm前先調用本函數 Public Sub ResizeInit(FormName As Form) Dim Obj As Control
ObjOldWidth = FormName.ScaleWidth ObjOldHeight = FormName.ScaleHeight ObjOldFont = FormName.Font.Size / ObjOldHeight On Error Resume Next For Each Obj In FormName Obj.Tag = Obj.Left & " " & Obj.Top & " " & Obj.Width & " " & Obj.Height & " " Next Obj
On Error GoTo 0 End Sub'按比例改變表單內各元件的大小, '在調用ReSizeForm前先調用ReSizeInit函數 Public Sub ResizeForm(FormName As Form)
Dim Pos(4) As Double Dim i As Long, TempPos As Long, StartPos As Long Dim Obj As Control Dim ScaleX As Double, ScaleY As Double
ScaleX = FormName.ScaleWidth / ObjOldWidth '保存表單寬度縮放比例 ScaleY = FormName.ScaleHeight / ObjOldHeight '保存表單高度縮放比例 On Error Resume Next
For Each Obj In FormName StartPos = 1 For i = 0 To 4 '讀取控制項的原始位置與大小 TempPos = InStr(StartPos, Obj.Tag, " ", vbTextCompare) If TempPos > 0 Then Pos(i) = Mid(Obj.Tag, StartPos, TempPos - StartPos) StartPos = TempPos + 1 Else Pos(i) = 0 End If
On Error GoTo 0 End SubPrivate Sub Form_Resize() '確保表單改變時控制項隨之改變 Call ResizeForm(Me) End SubPrivate Sub Form_Load() '在程式裝入時必須加入 Call ResizeInit(Me) End Sub
这样的话,我最大化的时候所有的空间都不动了,我是想让都可以自动适应
到网上找一些第三方控件,专门用来做这些事情的。据说ComponentOne不错。
Private ObjOldWidth As Long '保存表單的原始寬度
Private ObjOldHeight As Long '保存表單的原始高度
Private ObjOldFont As Single '保存表單的原始字體比'在調用ResizeForm前先調用本函數
Public Sub ResizeInit(FormName As Form)
Dim Obj As Control
ObjOldWidth = FormName.ScaleWidth
ObjOldHeight = FormName.ScaleHeight
ObjOldFont = FormName.Font.Size / ObjOldHeight
On Error Resume Next
For Each Obj In FormName
Obj.Tag = Obj.Left & " " & Obj.Top & " " & Obj.Width & " " & Obj.Height & " "
Next Obj
On Error GoTo 0
End Sub'按比例改變表單內各元件的大小,
'在調用ReSizeForm前先調用ReSizeInit函數
Public Sub ResizeForm(FormName As Form)
Dim Pos(4) As Double
Dim i As Long, TempPos As Long, StartPos As Long
Dim Obj As Control
Dim ScaleX As Double, ScaleY As Double
ScaleX = FormName.ScaleWidth / ObjOldWidth
'保存表單寬度縮放比例
ScaleY = FormName.ScaleHeight / ObjOldHeight
'保存表單高度縮放比例
On Error Resume Next
For Each Obj In FormName
StartPos = 1
For i = 0 To 4
'讀取控制項的原始位置與大小
TempPos = InStr(StartPos, Obj.Tag, " ", vbTextCompare)
If TempPos > 0 Then
Pos(i) = Mid(Obj.Tag, StartPos, TempPos - StartPos)
StartPos = TempPos + 1
Else
Pos(i) = 0
End If
'根據控制項的原始位置及表單改變大
'小的比例對控制項重新定位與改變大小
Obj.Move Pos(0) * ScaleX, Pos(1) * ScaleY, Pos(2) * ScaleX, Pos(3) * ScaleY
Obj.Font.Size = ObjOldFont * FormName.ScaleHeight
Next i
Next Obj
On Error GoTo 0
End SubPrivate Sub Form_Resize()
'確保表單改變時控制項隨之改變
Call ResizeForm(Me)
End SubPrivate Sub Form_Load()
'在程式裝入時必須加入
Call ResizeInit(Me)
End Sub