动态生成按钮时,可以用这样的语句实现
Set cmdarr = Me.Controls.Add("VB.CommandButton", "cmdarr")
动态生成MSFlexGrid时,我是这样做的:
Set msg = Me.Controls.Add("VB.MSFlexGrid", "msg")
返回错误:
Invalid class string.
Looking for object with ProgID: VB.MSFlexGrid
帮忙指正,谢了!
Set cmdarr = Me.Controls.Add("VB.CommandButton", "cmdarr")
动态生成MSFlexGrid时,我是这样做的:
Set msg = Me.Controls.Add("VB.MSFlexGrid", "msg")
返回错误:
Invalid class string.
Looking for object with ProgID: VB.MSFlexGrid
帮忙指正,谢了!
Option Explicit
Private WithEvents mObject As VBControlExtender
Private Sub Form_Load()
Licenses.Add "MSFlexGridLib.MSFlexGrid", _
"72E67120-5959-11cf-91F6-C2863C385E30"
Set mObject = Me.Controls.Add("MSFlexGridLib.MSFlexGrid", "msfGrid")
With mObject
.Left = 0
.Top = 0
.Width = Me.ScaleWidth
.Height = Me.ScaleHeight
.Visible = True
End With
End Sub
控件可以加上了,不过使用时还有一些问题:
1、你所说的Lisense是做什么的?我没有用
Licenses.Add "MSFlexGridLib.MSFlexGrid", _
"72E67120-5959-11cf-91F6-C2863C385E30" 就可以加上控件了
2、在别的窗体中设置这个控件属性会产生错误?(在添加它的窗体中设置控件属性时,就好用)
怎么办啊?
NewText.Visible = True或者使用控见数组,先在窗体上放置一个MSFlexGrid控件,并设定index=0
代码如下:
Load MSFlexGrid1(1)
MSFlexGrid1(1).Visible = True
Public WithEvents mObject As VBControlExtender
或者定义一个函数:
Public Function GetControl() As Object
set GetControl = mObject
End Function
然后直接访问mObject或者GetControl就可以了
呵呵,控件加上了,外部调用设置属性也好用了,可是,控件的事件怎么触发啊?比如我要用msg_click() 事件?
解决这个问题就结贴,非常感谢!
Public WithEvents mObject As VBControlExtender
那么你选择左边的对象下拉栏,选定mObject,然后在右边的事件栏中选择ObjectEvent,这样编译器会产生下面的函数,然后你可以在里面添加代码:
Private Sub mObject_ObjectEvent(Info As EventInfo)
Select Case Info.Name
Case "Click" '在Case后面填入事件的名称
'注意info.EventParameters是传入的参数集合
Case "MouseMove"
End Select
End Sub
Dim WithEvents objExt As VBControlExtender ' 使用 WithEvents 声明 VBControlExtender 变量Private Sub LoadControl()
'Licenses.Add "Project1.Control1", "ewrinvcmcoe"
Licenses.Add "MSFlexGridLib.MSFlexGrid", _
"72E67120-5959-11cf-91F6-C2863C385E30"
Set objExt = Controls.Add("MSFlexGridLib.MSFlexGrid", "myCtl")
With objExt
.Left = 0
.Top = 0
.Width = Me.ScaleWidth
.Height = Me.ScaleHeight
.Visible = True ' 该控件在缺省情况下为不可见的。
.ToolTipText = "这是一个MSFlexGrid控件!"
End With
End SubPrivate Sub Form_Load()
LoadControl
End SubPrivate Sub objExt_ObjectEvent(Info As EventInfo)
' 使用 Select Case 语句编写控件的事件处理程序。
Select Case Info.Name
Case "Click"
' 在此处处理 Click 事件。
MsgBox "click 事件"
' 在这里处理其他情况
Case Else ' 未知事件
' 在此处理各种未知的事件。
' MsgBox "else 事件"
End Select
End Sub