1.
Dim objControl As Control
For Each objControl In Me.Controls
If objControl.Container.Name = \"Frame1\" Then
Debug.Print objControl.Name
End If
Next
2.
Public Sub OperateFrame(ByRef objFrame As VB.Frame, ByVal intOperation As Integer)
’\\\\***********************************************************************
’\\\\函 数 名:OperateFrameTextBox
’\\\\输 入: ByRef objFrame(VB.Frame) -
’\\\\ : ByVal intOperation(Integer)
’\\\\ 1: 表示清空TextBox,
’\\\\ 2: 表示Enable所有TextBox
’\\\\输 出:无
’\\\\功能描述:对一个Frame内的TextBox或者ComboBox进行操作,如清空TextBox,Enable或者Disable等
’\\\\全局变量:
’\\\\使用例子:Call OperateFrame(Me.Frame2, 3)
’\\\\日 期:2004-09-22
’\\\\修 改 人:
’\\\\日 期:
’\\\\版 本:V1.0.0
’*************************************************************************
Dim objControl As Control
Dim TopForm As VB.Form
On Error GoTo ErrHandle
Set TopForm = GetTopContainer(objFrame)
For Each objControl In TopForm.Controls
Select Case intOperation
Case 1
’\\\\ 1 表示清空frame内所有TextBox
If (objControl.Container.Name = objFrame.Name) And (TypeName(objControl) = \"TextBox\") Then
objControl.Text = \"\"
End If
Case 2
’\\\\ 2 表示Enable所有frame内的TextBox
If (objControl.Container.Name = objFrame.Name) And (TypeName(objControl) = \"TextBox\") Then
objControl.Enabled = True
End If
Case 3
’\\\\ 2 表示Enable所有frame内的TextBox
If (objControl.Container.Name = objFrame.Name) And (TypeName(objControl) = \"TextBox\") Then
objControl.Enabled = False
End If
Case Else
End Select
Next
ErrHandle:
If Err.Number <> 0 Then
MsgBox Err.Description, vbCritical, \"提示\"
Err.Clear
End If
End Sub
Public Function GetTopContainer(ByRef objCtl As Control) As Object
’\\\\***********************************************************************
’\\\\函 数 名:GetTopContainer
’\\\\输 入:ByRef objCtl(Object)
’\\\\输 出:(Object)
’\\\\功能描述:获得某控件的顶层容器
’\\\\使用例子:Set TopForm = GetTopContainer(objFrame)
’\\\\全局变量:
’\\\\日 期:2004-09-22
’\\\\修 改 人:
’\\\\日 期:
’\\\\版 本:V1.0.0
’*************************************************************************
Dim objContainer As Object
Dim objMe As Object
Dim i As Integer
i = 1
On Error GoTo ErrHandle
’\\\\一层层向上获得Container,直到最高一层(为Form对象)
’\\\\这时候由于不存在Container对象,会诱发错误438(对象不支持该属性或方法)
Set objMe = objCtl
Do Until 1 = 2
If i > 2 Then
Set objMe = objContainer
End If
Set objContainer = objMe.Container
i = i + 1
If i > 100 Then
’\\\\当循环超过100次,应该是存在错误了
MsgBox \"异常情况!!\", vbCritical, \"提示\"
Exit Function
End If
DoEvents
Loop
ErrHandle:
If Err.Number <> 0 Then
If Err.Number = 438 Then
Set GetTopContainer = objMe
Else
MsgBox Err.Description, vbCritical, \"提示\"
End If
End If
End Function
责任编辑:小草