动态加载控件后如何调用控件的方法或属性。用Controls.Add方法只能用控件的通用的属性或方法。

qyh 2002-08-18 08:20:47
有一个用户控件有一方法:AddRow。

Option Explicit
Dim WithEvents myControl As VBControlExtender

Private Function LoadControl()
If Not myControl Is Nothing Then
Controls.Remove ("MyOcx")
End If
Set myControl = Controls.Add("OurtestOCX.MytestOCX", "MyOcx")
myControl.Height = 3500
myControl.Width = 6500
myControl.Top = 100
myControl.Visible = True
myControl.AddRow '问题在这里了,怎么才可以调用呢??
End Function

Private Sub Command1_Click()
LoadControl
End Sub


让主程序和OCX用DDE通讯???还是有其它的办法做到??
...全文
72 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qyh 2002-08-18
  • 打赏
  • 举报
回复
Dim WithEvents myControl As MytestOCX 和下面两句是一样的效果
Dim WithEvents myControl As VBControlExtender
Set myControl=TempCtl

所以还是不行。
zyl910 2002-08-18
  • 打赏
  • 举报
回复
Dim WithEvents myControl As VBControlExtender

Private Function LoadControl()
Dim TempCtl as Control

If Not myControl Is Nothing Then
Controls.Remove ("MyOcx")
End If

Set TempCtl = Controls.Add("OurtestOCX.MytestOCX", "MyOcx")
TempCtl.Height = 3500
TempCtl.Width = 6500
TempCtl.Top = 100
TempCtl.Visible = True
TempCtl.AddRow

Set myControl=TempCtl
End Function
qyh 2002-08-18
  • 打赏
  • 举报
回复
No,这个OCX需要动态加载,不可以Dim WithEvents myControl As MytestOCX
zyl910 2002-08-18
  • 打赏
  • 举报
回复
Dim WithEvents myControl As MytestOCX
qyh 2002-08-18
  • 打赏
  • 举报
回复
就是有一个OCX要动态加载,这个OCX有一个方法AddRow,我想执行AddRow。
用VBControlExtender只有默认的属性和方法。
qyh 2002-08-18
  • 打赏
  • 举报
回复
My god!

这个我知道。

我想执行:myControl.AddRow
zyl910 2002-08-18
  • 打赏
  • 举报
回复
Set myControl = Controls.Add("OurtestOCX.MytestOCX", "MyOcx")
^^^^^^^^^
qyh 2002-08-18
  • 打赏
  • 举报
回复
zyl910(910:分儿,我来了!) (L2002) :
动态加载控件啊!!!我上哪里定义MytestOCX型啊???!!!
继续!

newyon() :
  直接访问都不行,用CallByName行???
zyl910 2002-08-18
  • 打赏
  • 举报
回复
VBControlExtender类当然只有默认的属性

你应该把myControl定义为MytestOCX型
newyon 2002-08-18
  • 打赏
  • 举报
回复
CallByName 函数

执行一个对象的方法,或者设置或返回一个对象的属性。

语法

CallByName(object, procedurename, calltype,[arguments()])

CallByName 函数的语法有以下部分:

部分 描述
object 必需的;变体型(对象)。函数将要执行的对象的名称。
procedurename 必需的;变体型(字符串)。一个包含该对象的属性名称或者方法名称的字符串表达式。
calltype 必需的;常数。一个 vbCallType 类型的常数,代表正在被调用的过程的类型。
arguments() 可选的:变体型(数组)。


说明

CallByName 函数用于获取或者设置一个属性,或者在运行时使用一个字符串名称来调用一个方法。

在下面的例子中,第一行使用 CallByName 来设置一个文本框的 MousePointer 属性,第二行得到 MousePointer 属性的值,第三行调用 Move 方法来移动文本框:

CallByName Text1, "MousePointer", vbLet, vbCrosshair
Result = CallByName (Text1, "MousePointer", vbGet)
CallByName Text1, "Move", vbMethod, 100, 100

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧