VB6.0中动态加载ActiveX的问题

时间:2012-04-02 10:23:44

标签: vb6 activex

我有以下方法用于动态加载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

2 个答案:

答案 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属性的使用情况。