我把几个图标放在一个画面中一起做成一个控件,但对图标的click事件想放到前台来写,因此在该控件中写了几个事件,分别对应这些图标的click事件,好了,现在该控件完成了。前台调用时:如果直接把该控件拖到Form上调用,当然没有问题。但是,如果我用controls.Add方法来动态创建该控件的话,不知道怎么写该控件上的图标对应的click事件了,有办法吗?
解决方案 »
- 无崩溃最简子类化,散分求测试。。。
- 谢谢[VirtualDesktop(吴滂)]帮忙解决了这个问题[找人做个VB6的小程序],请进来取分
- 關于水晶報表﹐變換明細的背景顏色?
- 求 拦截窗体消息的钩子(hook)(50分)
- 如何把通过代码把windows显示属性-》效果-》动画显示菜单和工具条提示 前的“√”去掉?
- 为什么记录集的值总为-1-------我没分了:(
- 请指点编程识别U盘特征的思路,有源码更好
- 请教:如何用ODBC连接远程ACCESS数据库?
- API简单问题
- 关于VB中查询SQL SERVER日期时间的问题。。。。。?
- 如何在vb的mdi窗口里获得子窗口的列表,在线等!
- 如何使数字在label中走马灯显示???
======================
用ScriptControl。
Private Sub Command1_Click()
Unload Me
End SubPrivate Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
ReleaseCapture
SendMessage Me.hwnd, 161, 2, 0
End SubPrivate Sub Timer1_Timer()
'On Error Resume Next
Dim i As Integer, l As Long
l = -320
For i = 1 To 10
Form1.Controls.Add "VB.CommandButton", "cmdObj" & i
With Form1.Controls("cmdobj" & i & "")
.Visible = True
.Width = 320
.Left = l + 320
.Height = 320
.Caption = i
l = l + 320
.TabStop = False
End With
Next i
VBControlExtender = cmdobj1
Timer1.Enabled = False
End SubPrivate Sub cmdobj1_click()
VBControlExtender
MsgBox "sdlfkj"
End Sub2: Module1的代码
Public Declare Function ReleaseCapture Lib "user32" () As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long如果能正常让下面一段代码正常工作就达到我的要求了,可惜这一段代码怎么就执行不到呢。
Private Sub cmdobj1_click()
VBControlExtender
MsgBox "sdlfkj"
End Sub
http://blog.csdn.net/TechnoFantasy/archive/2001/04/28/2957.aspx
免费的学习交流网站,欢迎大家访问!
http://www.j2soft.cn/
rainstormmaster(暴风雨 v2.0) 的代码看不全,只能调出生成控件,还是不能响应事件。我的代码如下,各位高手再看看:Option Explicit
Dim WithEvents ctlDynamic As VBControlExtender
'Dim WithEvents ctlDynamic As VB.CommandButtonPrivate Sub Form_Load()
Dim i As Integer
Licenses.Add "ctrMarcoERP.cmBom"
Set ctlDynamic = Controls.Add("ctrMarcoERP.cmBom", "myCtr", Me)
' Set ctlDynamic = Controls.Add("VB.CommandButton", "myCtr", Me)
ctlDynamic.Move 1, 1, 1000, 1000
ctlDynamic.Visible = True
End Sub' 本来我的控件中有好几个自定义事件,这是其中之一,无法响应
Private Sub ctlDynamic_clickBom()
MsgBox "bom"
End Sub
'对VB.CommandButton可以响应此事件,但我想让它响应我的自定义事件
Private Sub ctlDynamic_click()
MsgBox "bom"
End Sub
一个自定义控件,内含N个图标,对每一个图标定义一个自定义click事件,在前台分别实现这些事件。如果不用动态创建的话已经没有问题了。
但我想万一这些图标要改得更漂亮一些时,只需重新编绎此控件,前台代码不需改动,所以想用动态创建。 当然如果能达到此效果,其它方法也可以。
Public Event 事件名称(事件参数)
例如:
Public Event HookMessage(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long)然后在你自定义的控件代码中需要让该事件发生的地方写上:
RaiseEvent 事件名称(参数值)
例如:
RaiseEvent HookMessage(hWnd, Msg, wParam, lParam)
Option Explicit
Dim WithEvents ctlDynamic As VBControlExtender
'Dim WithEvents ctlDynamic As VB.CommandButtonPrivate Sub Form_Load()
Dim i As Integer
Licenses.Add "ctrMarcoERP.cmBom"
Set ctlDynamic = Controls.Add("ctrMarcoERP.cmBom", "myCtr", Me)
' Set ctlDynamic = Controls.Add("VB.CommandButton", "myCtr", Me)
ctlDynamic.Move 1, 1, 1000, 1000
ctlDynamic.Visible = True
End SubPrivate Sub ctlDynamic_ObjectEvent(Info As EventInfo)
Select Case Info.Name
Case "clickBom"
MsgBox "clickBom"
End Select
End Sub