Frame內控件的遍歷的代碼

字號:

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對象,會誘發(fā)錯誤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
    ’\\\\當循環(huán)超過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