Option Explicit Private FormOldWidth As Long '`保存窗体的原始宽度 Private FormOldHeight As Long '`保存窗体的原始高度'`在调用ResizeForm前先调用本函数 Public Sub ResizeInit(FormName As Form) Dim Obj As Control FormOldWidth = FormName.ScaleWidth FormOldHeight = FormName.ScaleHeight 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 DoubleScaleX = FormName.ScaleWidth / FormOldWidth '`保存窗体宽度缩放比例 ScaleY = FormName.ScaleHeight / FormOldHeight '`保存窗体高度缩放比例 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 Next I Next Obj On Error GoTo 0 End Sub
能举个例子吗,比如只有一个command1控件 请帮忙请代码
在form_load里调用ResizeInit 在form_Resize里调用ResizeForm
不行呀,我用的是vb6.0 FormName.ScaleWidth 编译时出错 溢出 请帮忙
就是vb6的代码将上述的代码存为模块 屏幕调用如下:Private Sub Form_Load() ResizeInit Form1 End SubPrivate Sub Form_Resize() ResizeForm Form1 End Sub
Resize 事件示例 本例在任何调整窗体大小时的时候,都将自动调整一个 TextBox 控件的大小以填充该窗体。要尝试这个例子,可以将代码粘贴到包含 TextBox 的窗体声明部分。 设置 TextBox 控件的 MultiLine 属性为 True,ScrollBars 属性为 3,BorderStyle 属性为 0,然后按F5键并调整窗体大小。Private Sub Form_Load () Text1.Text = "" ' 清除文本。 End SubPrivate Sub Form_Resize () Text1.Move 0,0, ScaleWidth, ScaleHeight End Sub
Private FormOldWidth As Long
'`保存窗体的原始宽度
Private FormOldHeight As Long
'`保存窗体的原始高度'`在调用ResizeForm前先调用本函数
Public Sub ResizeInit(FormName As Form)
Dim Obj As Control
FormOldWidth = FormName.ScaleWidth
FormOldHeight = FormName.ScaleHeight
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 DoubleScaleX = FormName.ScaleWidth / FormOldWidth
'`保存窗体宽度缩放比例
ScaleY = FormName.ScaleHeight / FormOldHeight
'`保存窗体高度缩放比例
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
Next I
Next Obj
On Error GoTo 0
End Sub
请帮忙请代码
在form_Resize里调用ResizeForm
FormName.ScaleWidth
编译时出错
溢出
请帮忙
就是vb6的代码将上述的代码存为模块
屏幕调用如下:Private Sub Form_Load()
ResizeInit Form1
End SubPrivate Sub Form_Resize()
ResizeForm Form1
End Sub
本例在任何调整窗体大小时的时候,都将自动调整一个 TextBox 控件的大小以填充该窗体。要尝试这个例子,可以将代码粘贴到包含 TextBox 的窗体声明部分。 设置 TextBox 控件的 MultiLine 属性为 True,ScrollBars 属性为 3,BorderStyle 属性为 0,然后按F5键并调整窗体大小。Private Sub Form_Load ()
Text1.Text = "" ' 清除文本。
End SubPrivate Sub Form_Resize ()
Text1.Move 0,0, ScaleWidth, ScaleHeight
End Sub