请教个遍历窗口控件的问题
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
[其他解释]
我这样可以正常调用
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 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