首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

请问个遍历窗口控件的有关问题

2012-12-17 
请教个遍历窗口控件的问题For Each Control In Me.Controls这样是遍历当前窗口中的控件 但是在OCX界面中该

请教个遍历窗口控件的问题
For Each Control In Me.Controls
这样是遍历当前窗口中的控件 

但是在OCX界面中该如何遍历这个OCX里面的所有控件呢 

OCX本身也是Control 吧
谁能指点下 谢谢
[最优解释]
你要明确说明SaveFrmControlToIni这个函数定义在哪个模块中,调用他的代码又是在哪个模块中。
比如usercontrol这个对象,肯定是要在该用户控件的模块代码内部使用才有效的啊
[其他解释]


Private Sub Command1_Click()
    Dim objP As Control
    For Each objP In Me.Controls
        Debug.Print objP.Name
    Next


OCX也是记录中的一个
[其他解释]
Private Sub UserControl_Initialize()
    Dim ctrl As Control
    For Each ctrl In UserControl.Controls
        Debug.Print ctrl.Name
    Next
End Sub

[其他解释]


这样写会报错  这个OCX界面是一个UserControl

[其他解释]
引用:
Visual Basic code
?



123456

Private Sub Command1_Click()     Dim objP As Control     For Each objP In Me.Controls         Debug.Print objP.Name     Next

OCX也是记录中的一个


我这样可以正常调用
For Each objP In UserControl.Controls
但是因为在函数中使用
调用的时候Call SaveFrmControlToIni(UserControl, "c:\text.ini", Text1.Text)
他就会提示使用的基类名称无效  
如果用Me替代他就会提示未找到方法或数据成员  

Public Function SaveFrmControlToIni(frm As Object, IniFileName As String, AppName As String)
            
            Dim FrmCtr As Control
            Dim CtrValue As String
            Dim CtrName As String
            Dim EfficValue As String  '//有效的属性.
            
            For Each FrmCtr In frm.Controls
                CtrName = UCase$(FrmCtr.Name)
                If Len(CtrName) >= 5 Then
                    If Mid$(CtrName, 4, 1) = "R" Or Mid$(CtrName, 4, 1) = "W" Then
                        EfficValue = GetControlEfficValue(FrmCtr)
                        CtrValue = VBA.CallByName(FrmCtr, EfficValue, VbGet)


                        WriteIniStr AppName, CtrName, CtrValue, IniFileName
                    End If
                End If
            Next
            
            Set FileCtr = Nothing
            
End Function
[其他解释]
参考一下,在用户控件里可以这样写

Private Sub UserControl_Initialize()
    Dim objP
    For Each objP In UserControl.Controls
        Debug.Print objP.Name
    Next
End Sub

[其他解释]
引用:
For Each Control In Me.Controls
这样是遍历当前窗口中的控件 

但是在OCX界面中该如何遍历这个OCX里面的所有控件呢 

OCX本身也是Control 吧
谁能指点下 谢谢


For Each Control In usercontrol.Controls

[其他解释]
[quote=引用:]
参考一下,在用户控件里可以这样写
现在的情况
这段代码本身是在SaveFrmControlToIni函数里 函数的代码在3楼
 我这样调用Call SaveFrmControlToIni(Me, "c:\text.ini", Text1.Text)
正常 但是在OCX里 用Me.Controls是报错的 只能用usercontrol.Controls
但是调用函数的时候就成这样了 
Call SaveFrmControlToIni(UserControl, "c:\text.ini", Text1.Text)
他就会报错    使用的基类名称无效  
那这里该如何该动呢  才能正确的是函数里 frm.Controls
获取frm的值 让 那个函数里的frm.Controls等于usercontrol.Controls
 

热点排行