Frame内控件的遍历的代码 |
|
www.nanhushi.com 佚名 不详 |
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
|
|
|
文章录入:杜斌 责任编辑:杜斌 |
|
上一篇文章: VB遍历已打开的MDI子窗体 下一篇文章: VB中使复选框实现单选框功能 |
【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |
|
|