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

VB6.0中动态加载ActiveX的问题,vb6,activex,Vb6,Activex,我使用以下方法动态加载ActiveX控件 Dim ctl As Control Set ctl = Form1.Controls.Add("prog.id", "myctl") ctl.Visible = True 使用此代码控件成功地显示在窗体上,但当我尝试访问控件的方法/属性时,ctl.mymethod()its会出现错误,“对象不支持此方法或属性” 第二,当我使用这种方法时 Dim ctl As Object Set ctl = CreateObject("prog.id") Ctl.m

我使用以下方法动态加载ActiveX控件

Dim ctl As Control
Set ctl = Form1.Controls.Add("prog.id", "myctl")
ctl.Visible = True
使用此代码控件成功地显示在窗体上,但当我尝试访问控件的方法/属性时,
ctl.mymethod()
its会出现错误,“对象不支持此方法或属性”

第二,当我使用这种方法时

Dim ctl As Object
Set ctl = CreateObject("prog.id")
Ctl.mymethod()
在此方法已成功从控件调用,但我无法在窗体上显示此对象

请告诉我关于这个问题的任何解决方案

编辑:

使用以下方法调用方法时也会出现错误,“对象不支持……”


不要将引用声明为
控件
。这只会让您访问
控件
接口成员。 尝试将
ctl
声明为
Object
,然后它将完全延迟绑定

Dim ctl As Object
Set ctl = Controls.Add("COMCTL.ListViewCtrl", "myctl")
ctl.Visible = True
ctl.View = 2
ctl.ListItems.Add , , "123"

不要将引用声明为
控件
。这只会让您访问
控件
接口成员。 尝试将
ctl
声明为
Object
,然后它将完全延迟绑定

Dim ctl As Object
Set ctl = Controls.Add("COMCTL.ListViewCtrl", "myctl")
ctl.Visible = True
ctl.View = 2
ctl.ListItems.Add , , "123"

如果控件具有类型库(.tlb),请添加对它的引用,然后重试此操作

Dim ctl As prog.id
Set ctl = Controls.Add("prog.id", "myctl").Object
ctl.mymethod

请注意
.Object
属性的用法。

如果控件有类型库(.tlb),请添加对它的引用,然后重试此操作

Dim ctl As prog.id
Set ctl = Controls.Add("prog.id", "myctl").Object
ctl.mymethod

请注意
.Object
属性的用法。

谢谢您的回复,但使用第二种方法如何在窗体上添加此控件?不行,您需要使用
控件。添加
以在运行时向窗体添加控件。这对我很有用。如果需要进一步帮助,您需要提供更全面的代码示例。(它还可以将其声明为
控件
)谢谢您的回复,但使用第二种方法如何在窗体上添加此控件?不行,您需要使用
控件。添加
以在运行时将控件添加到窗体中。对我有效。如果您需要进一步帮助,您需要提供更全面的代码示例。(它还可以将其声明为
控件
)我没有.tlb文件,只有在系统上注册的OCX。我想访问ActiveX的属性,在ActiveX中,我使用此方法公开属性公共属性Let ShowSelection(bShow为布尔值)如何从ocx文件中获取tlb文件?@Siddiqui如果ocx是用VB6创建的,那么它有一个嵌入的TypeLib。您是否向项目中添加了对ocx的引用?如果添加了,您可以点击F2并使用对象浏览器视图,您应该可以看到您的控件,并且您应该能够在代码中按类型名称引用它。我没有.tlb文件,只有OC在系统上注册的X。我想访问ActiveX的属性,在ActiveX中,我使用此方法公开属性公共属性Let ShowSelection(bShow为布尔值)如何从ocx文件获取tlb文件?@Siddiqui如果ocx是用VB6创建的,那么它有一个嵌入的TypeLib。您是否向项目中添加了对ocx的引用?如果添加了,您可以点击F2并使用对象浏览器视图,您应该可以看到您的控件,并且应该能够在代码中按类型名称引用它。