您的位置:学习中国 推荐教程 VB编程 正文
原作者:kuku 添加时间:2007-06-02 原文发表:2007-06-02 人气:93 来源:互联网

本文章共3891字,分3页,当前第2页,快速翻页:
 
-----------------------------------------------------------------------------------------------------------------------------------------------

本文提示:《VB6.0动态加载ActiveX控件漫谈(2)》是本站编辑们为广大网友精选的实用文章,本文阐述了关于文章的相关理论,相对来说专业性强,但是本文只是针对于某个问题提出的见解与论述,未必能辐射到相关问题的方方面面,所以本文处理问题的方法仅仅为您提供一些参考。更多问题请查阅学习中国网其他栏目哦.

-----------------------------------------------------------------------------------------------------------------------------------------------


与EventInfo相结合能提供事件陷井捕捉,VBControlExtender对象对动态添加控件特
别有用,它提供了一套通用的属性、方法、事件给开发人员,它的一个突出特点是能编
程设计控件的事件,熟习类编程的朋友对带事件的对象声明一定不会陌生:
---- Dim WithEvents objElemt as CElemtVBControlExtender也不例外,声明的
语法一样,只不过它有个特殊的事件ObjectEvent(Info As EventInfo),它能捕捉到对
象使用RaiseEvent产生的所有事件,EventInfo数据结构映射了事件的名称、参数个数
和参数的值。VBControlExtender和 EventInfo相结合,采用Select Case 就可以预先
将不同类对象的事件放置一起,各自独立运作。将上面的代码改写一下就能提供Click
事件了:

---- Dim WithEvents oControl As VBControlExtender '带事件声明声明之后您
就可以在代码窗口的左上角的对象下拉框中发现该对象出现了,也就是说,该对象有了
事件或方法了,它的事件有DragDrop,DragOver ,LostFocus ,GotFocus ,
ObjectEvent和Validate,其中ObjectEvent是通用的事件捕捉。


Private Sub LoadControl()
Set oControl = Controls.Add
("VB. CommandButton", "MyButton")
oControl.Visible = True
End Sub

Private Sub oControl_ObjectEvent(Info As EventInfo)
Select Case Info.Name
Case "Click" 'Click事件
'您可以添加处理Click事件代码
MsgBox "您按了MyButton!"
Case Else ' 其他事件
' Handle unknown events here.
End Select
End Sub

---- 当然对微软提供的标准控件能采用该方法添加,大家都不会怀疑,但自己开
发的控件也能吗?答案是肯定的,我们可以用一个实际的例子进行说明。

三、实例描述

---- 假设一个本地网络的监控系统,需要在原理图与实物示意图间切换,原理图
包括组网结构、传输资源、监控主机等,而实物示意图包括路由器、设备、采集器等,
当然两种图的事件要一致,如双击某个设备图形将显示给设备的实时数据等,为了简化
维护,将原理图与实物示意图封装成ActiveX控件,由于每种图需要加载许多图形控
件,消耗资源较大,不能同时加载,需要将其分解为两个控件,在切换时首先卸载一个
控件,然后加载另一个控件,所以要实现动态加载ActiveX控件。

---- 原理图控件为--Theory.ocx ,对应工程为CTheory;

---- 实物图控件为---Fact.ocx ,对应工程为CFact;

---- 注意:为了简化,在设计控件时不设置许可证关键字。

---- 实物图控件上的图形对象可以被拖动,拖动后的位置信息通过事件
ChangePosition来通知拥有该控件的窗体,以便下次加载能显示在最后位置,实物
图和原理图控件都有双击事件完成的工作相同,其他事件此处忽略。

---- 四、具体示例

---- 1、准备工作

---- 对控件Theory.ocx 、Fact.ocx 进行注册(利用Regsvr32.exe注册);

---- 建立窗体frmTest.frm ,在窗体上放置按钮cmdLoadOcx—“原理图”

---- 2、声明窗体级变量与加载函数LoadControl

Dim WithEvents oControl As VBControlExtender
'地图仿真控件对象
Dim mblnTheory As Boolean '是否显示原理图

Private Function LoadControl(intType As Integer)

If Not oControl Is Nothing Then
'首先判断对象是否存在,若存在则卸载
Controls.Remove("MapView")
'卸载控件,此操作非常重要
End If
If intType = 0 Then
Set oControl = Controls.Add
("CTheory. Theory", "MapView")
Else
Set oControl = Controls.Add
("CFact.Fact", "MapView")
End If

oControl.Height = 3500
oControl.Width = 6500
oControl.Top = 100
 
本文章更多内容<<上一页 - 1 - 2 - 3 - 下一页>>
本页地址
收藏到:[收藏夹] [百度搜藏] [新浪ViVi] [POCO网摘] [ 和讯网摘] [好哦网摘] [Google书签]
               
[搜狐网摘] [365Key网摘] [天极网摘] [我摘] [博采网摘] [igooi网摘]
相关文章

VB5实现窗口图像缩放、滚动技巧
VB5.0中实现字体闪烁效果
VB5.0中基于桌面的屏幕技巧
VB5.0下工具条的制作
VB 5.0中实现鼠标拖放
Office或IE4风格的ToolBar
Cool 3D 浮動按鈕的模擬作法
用VB做个漂亮的进度条
用VB设计聚焦框程序
用VB6实现动态增减控件
VB6制作Win98风格的工具栏
VB编程步步高-表单篇
VB编程常见问题
VB编程中如何锁定鼠标
VB编程中如何锁定鼠标
VB创建位图菜单
VB的OPEN对话框控件图示功能扩充
VB实现按钮浮动效果
VB实现窗口的弹出式菜单
VB应用程序中的工具提示和状态显示

相关评论


本文章所属分类:首页 推荐教程 VB编程   VB编程