我有以下方法用于动态加载ActiveX控件,
Dim ctl As Control
Set ctl = Form1.Controls.Add("prog.id", "myctl")
ctl.Visible = True
使用此代码控件成功显示在窗体上,但是当我尝试访问控件ctl.mymethod()
的方法/属性时,它会给出错误,“对象不支持此方法或属性”。
其次,当我使用这种方法时
Dim ctl As Object
Set ctl = CreateObject("prog.id")
Ctl.mymethod()
此方法已从控件成功调用,但我无法在表单上显示此对象。
请告诉我有关此问题的任何解决方案。
修改
使用以下approch,当我调用方法时,它也会给出错误,“对象不支持........”
Dim ctl As Object
Set ctl = Controls.Add("prog.id", "myctl")
ctl.Visible = True
答案 0 :(得分:3)
不要将引用声明为Control
。这只会让您访问Control
接口成员。
尝试将ctl
声明为Object
,然后将完全延迟绑定。
Dim ctl As Object
Set ctl = Controls.Add("COMCTL.ListViewCtrl", "myctl")
ctl.Visible = True
ctl.View = 2
ctl.ListItems.Add , , "123"
答案 1 :(得分:1)
如果你有一个类型库(.tlb)用于控件,添加对它的引用并尝试这个
Dim ctl As prog.id
Set ctl = Controls.Add("prog.id", "myctl").Object
ctl.mymethod
请注意.Object
属性的使用情况。