vb6.0 自适应窗体模块怎样在usercontrol中调用?
aycls 2015-04-27 09:45:20 全部代码如下,请老师看看怎么修改?
问题出在红色和绿色代码部分:子控件的4个属性无法写入obj.tag,去掉纠错语句on error resume next 运行时提示:对象不支持该属性或方法(绿色语句)
'模块中代码:
Option Explicit
Private FormOldWidth As Long
'保存窗体的原始宽度
Private FormOldHeight As Long
'保存窗体的原始高度
'在调用ResizeForm前先调用本函数
Public Sub ResizeInit(FormName As VBControlExtender)
Dim Obj As Control
FormOldWidth = FormName.Width
FormOldHeight = FormName.Height
'On Error Resume Next
For Each Obj In FormName'在这里报错,说对象不支持该属性或方法
Obj.Tag = Obj.Left & " " & Obj.Top & " " & Obj.Width & " " & Obj.Height & " "'记录不上这些属性值
debug.print obj.tag‘从立即窗口看:空值
Next Obj
On Error GoTo 0
End Sub
'按比例改变表单内各元件的大小,
'在调用ReSizeForm前先调用ReSizeInit函数
Public Sub ResizeForm(FormName As VBControlExtender)
'Debug.Print FormName.Width, FormName.Height
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
If FormOldWidth <> 0 And FormOldHeight <> 0 Then
ScaleX = FormName.Width / FormOldWidth
'保存窗体宽度缩放比例
ScaleY = FormName.Height / FormOldHeight
End If
'保存窗体高度缩放比例
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
usercontrol中代码:
Private Sub UserControl_Initialize()
Call ResizeInit(UserControl.Extender)
End Sub
Private Sub UserControl_Resize()
Call ResizeForm(UserControl.Extender)
End Sub