'定义一个对象
Private MyCmd As ObjectPrivate Form_Load()
Set MyCmd = Controls.Add("VB.Commandbutton", "cmdTest")
MyCmd.Caption = "这是动态按钮"
MyCmd.Top = 600
MyCmd.Visible = True
end sub'上面由 MyCmd 引用其所有属性均正常,但却无法如下引用其事件:
Sub MyCmd_Click()
MyCmd.Caption = "OK!,很好!"
End Sub'正确的方法我知道,须这样定义:
Private WithEvents cmdObject As CommandButton
'才能如此引用其事件:
Private Sub cmdObject_Click()
MsgBox "哈,成功引用事件了!"
End Sub'我想知道这里的蹊跷!
Private MyCmd As ObjectPrivate Form_Load()
Set MyCmd = Controls.Add("VB.Commandbutton", "cmdTest")
MyCmd.Caption = "这是动态按钮"
MyCmd.Top = 600
MyCmd.Visible = True
end sub'上面由 MyCmd 引用其所有属性均正常,但却无法如下引用其事件:
Sub MyCmd_Click()
MyCmd.Caption = "OK!,很好!"
End Sub'正确的方法我知道,须这样定义:
Private WithEvents cmdObject As CommandButton
'才能如此引用其事件:
Private Sub cmdObject_Click()
MsgBox "哈,成功引用事件了!"
End Sub'我想知道这里的蹊跷!
解决方案 »
- rs.addnew报错
- 弹出数据选择框
- 编写记事本程序的问题!
- 代码无法在XP下获取网卡地址,有没有其他搞法?
- 使用ADO连接MSSQLSERVER2000 数据库不时报错 请问应该怎么解决呀
- 动态加载dll,如果有窗口则使用CallWindowProc执行dll中的函数,可我现在是ActiveX,怎么办
- 很多人问怎么处理文本框限制性输入的问题,比如只接受数字或指定的字符, 看看我的贴子,我觉得比较经典:)
- 求vb寻找双引号正则表达式或者其他算法
- Accsee2000数据库联结与记录统计相关问题!
- 尝试active,遇到困难,请求帮助
- 请教!!!!!Me.Scale方法
- 如何隐藏窗体中的COMMAND命令按钮!!有了答案立刻结帖。很急
不加WithEvents的话就相当于定义了一个普通对象(例如FileSystemObject),自然不会响应任何事件。加上WithEvents表明该控件可以接受键盘、鼠标事件等等
当然,我的想法非常肤浅,还是等专家来讲课!!
dim WithEvents MyCmd As ObjectPrivate Form_Load()
Set MyCmd = Controls.Add("VB.Commandbutton", "cmdTest")
MyCmd.Caption = "这是动态按钮"
MyCmd.Top = 600
MyCmd.Visible = True
end sub'上面由 MyCmd 引用其所有属性均正常,但却无法如下引用其事件:
Sub MyCmd_Click()
MyCmd.Caption = "OK!,很好!"
End Sub'正确的方法我知道,须这样定义:
Private WithEvents cmdObject As CommandButton
'才能如此引用其事件:
Private Sub cmdObject_Click()
MsgBox "哈,成功引用事件了!"
End Sub
当您在声明区中使用 VBControlExtender object 及 WithEvents 来新增 ActiveX 控制项时,您必须使用 ObjectEvent method 来处理所有这个控制项的事件。如果您声明一个预设的控制项事件,您将会得到您声明的这个物件类别的所有标准事件,如何得知呢?加入以下的声明,然后在程序码视窗的控制项 Combo 中,找到您声明的这个控制项变数,然后点选事件 Combo,您就会看到了!Dim WithEvents cmdMyCommand as VB.CommandButton以下是我们的范例:1、建立一个标准的新项目,预设会产生 Form1,不必加入任何控制项。2、在 Form1 中加入以下的程序码:Option Explicit
' 在程序执行时要动态新增 ActiveX 控制项,而这个新增的控制项,
' 在项目的【设定使用元件】、【设定引用项目】中没有声明的话,
' 您必须将它声明成 VBControlExtender
Dim WithEvents ctlDynamic As VBControlExtender
Dim WithEvents ctlText As VB.TextBox
Dim WithEvents ctlCommand As VB.CommandButtonPrivate Sub ctlCommand_Click()
ctlText.Text = "You Clicked the Command button"
End SubPrivate Sub ctlDynamic_ObjectEvent(Info As EventInfo)
' 测试 TreeView 的 Click 事件
If Info.Name = "Click" Then
ctlText.Text = "You clicked " & ctlDynamic.object.selecteditem.Text
End If
End SubPrivate Sub Form_Load()
Dim i As Integer' 将 TreeView 的 License Key 加到 License Collection 中。
' 但是,如果这个 License Key 已经存在 License Collection 中,
' 您会得到一个编号 732 的执行期错误讯息。
Licenses.Add "MSComctlLib.TreeCtrl"' 动态新增 TreeView 控制项到 Form 中,如果您想将这个控制项
' 加到 Form 以外的 Container 中,例如 Frame 或 Picture,那么,
' 在 Controls.Add 的第三个参数必须修改成 Container 的名称。
Set ctlDynamic = Controls.Add("MSComctlLib.TreeCtrl", "myctl", Form1)' 设定 TreeView 控制项的位置及大小
ctlDynamic.Move 1, 1, 2500, 3500' 新增 TreeView 控制项的 nodes
For i = 1 To 10
ctlDynamic.object.nodes.Add Key:="Test" & Str(i), Text:="Test" & Str(i)
ctlDynamic.object.nodes.Add Relative:="Test" & Str(i), _
Relationship:=4, Text:="TestChild" & Str(i)
Next i' 设定 TreeView 控制项的 Visible 属性为 True
ctlDynamic.Visible = True' 动态新增 TextBox 控制项
Set ctlText = Controls.Add("VB.TextBox", "ctlText1", Form1)' 设定 TextBox 控制项的位置及大小
ctlText.Move (ctlDynamic.Left + ctlDynamic.Width + 50), 1, 2500, 100' 设定 TextBox 控制项的 backcolor 属性
ctlText.BackColor = vbYellow' 设定 TextBox 控制项的 Visible 属性为 True
ctlText.Visible = True' 动态新增 CommandButton 控制项
Set ctlCommand = Controls.Add("VB.CommandButton", "ctlCommand1", Form1)' 设定 CommandButton 控制项的位置及大小
ctlCommand.Move (ctlDynamic.Left + ctlDynamic.Width + 50), _
ctlText.Height + 50, 1500, 500' 设定 CommandButton 控制项的标题
ctlCommand.Caption = "Click Me"' 设定 CommandButton 控制项的 Visible 属性为 True
ctlCommand.Visible = True
End Sub3、您现在可以执行看看了!按一下 CommandButton 或是 TreeView 的不同 Node,看看 TextBox 中出现什么!注一:如果您想知道多一点关于 License Collection 的资料,您可以到以下这个网址看看:http://support.microsoft.com/support/kb/articles/Q188/5/77.ASP它的主题是:HOWTO: What is the Licenses Collection Used For? (Licenses Collection 要做什么用 ?)