2012-07-19>#V ##B ##6#.#0#下##用#2户01控2-件07-的19设##计##与##应#2#用012-07-19>###
李志伟
(空军第一航空学院 计算机教研室,河南 信阳 464000)
摘 要:介绍了基于 COM 的 ActiveX 控件技术,提出了在 VB 6.0 下用户 ActiveX 控件设计、应用的具体方案,包括用户控件属
性的创建,用户控件代码的测试、编译、注册等,解决了软件模块的移植和代码复用问题,为不同软件之间的接口和功能扩 充提供了一种快捷有效的途径。 关键词:用户控件; 属性; 测试; 注册; 移植 中图法分类号:TP311
文献标识码:A
文章编号:1000-7024 (2007) 08-1976-03
Design and application of user control in VB 6.0
LI Zhi-wei
(Office of Computer Teaching and Researching, First Aeronautical Institute of Air Force, Xinyang 464000, China )
Abstract :The ActiveX control based on COM is introduced. The method of design an d application for user ActiveX control in VB 6.0 is proposed. And the establishin g for user control properties, and the test, compilation, as well as register for user control code are provided. The problem of transplant for software module an d code reuse is solved. Provide a shortcut and effective way for the interface of different software and the function expansion.
Key words :user control; property; test; register; transplant
议。ActiveX 控件必须具备如下的性能机制:
属性:指控件的特性,用于定义控件的某一特征或控件行 为的某一方面。
方法:指控件可执行的操作。ActiveX 控件必须提供属性 的名称、方法的名称及参数,通过该项机制,容器可以存取和 改变 ActiveX 控件的属性参数。
事件:指可由控件识别的操作。ActiveX 控件由该项机制 通知容器在 ActiveX 控件中发生的事件,比如属性参数的改 变,用户按下鼠标左键等。
ActiveX 控件是一个模块化的灵活对象,如果某个应用程 序或网页需要增加一项特殊的功能,则无须重写整个程序,只 要灵活地插入一个具有此项功能的 ActiveX 控件即可实现。
ActiveX 的另一个优势是它的动态可交互性。用户可以动态 地在使用过程中,通过改变它的属性和参数,在应用程序中实 现自己的特殊要求。
ActiveX 控件可分为标准控件和用户控件。在 VB 6.0 中, 微软公司已将一些常用的控件,如文本框、标签、命令、时钟等 作为标准控件,预装到了系统中。然而,用户还可以根据需要 将自己的某些功能程序设计成控件的形式,注册到系统中,和 标准控件一样被系统程序引用。
下面以某型雷达告警器信息显示程序的设计为例,介绍 在VB 6.0 下用户控件的设计、测试、生成、注册等,并详细介绍 了具体的应用方法。
0 引 言
Visual Basic 6.0 提供了非常丰富的标准控件,利用这些控
件,人们可以设计出完美的用户界面,实现完善的系统功能。 然而在实际应用中,尤其是对于大型软件设计,常常需要多种 语言混合编程,各种不同系统开发的程序需要相互调用,程序 资源需要共享。为了解决各系统程序之间的数据传递、资源 利用问题,对于系统中经常用到,功能相对独立的程序模
块, 可以将其设计成 ActiveX 控件的形式,使其与标准的 ActiveX 控件一样,为不同的应用系统所调用,从而提高软件的接口能 力和代码复用效率。
1 ActiveX 及 ActiveX 控件
ActiveX 是微软提出的一种基于组件对象模型 COM (com- ponent object model )的嵌入式程序技术,是一组包括控件、DLL 和 ActiveX 文档的组件。它通常以动态链接库的形式存在,其 设计思想是将一个程序(比如 Flash 动画)嵌入到另一个程序中 (这个程序通常被称作容器,比如 Authorware 、Delphi 、VB 、VC 、 Internet Explorer 等)。借助这种技术,可以将用户在一个程序 中创建的信息集成到其它程序所产生的文档中,从而方便地 将其应用到各种场合。
ActiveX 控件的数据输入和函数功能执行都必须通过容 器,因此 ActiveX 控件和容器之间必须有一些特定的接口协
2012-0收稿7日-期1:9200#6-0#8-3#0 ##E -#m a #i l :##x #y lz #w @#so #h u.#c om
##2012-07-19>##2#012-07-19>###
图 1 控件设计示例
2.1 用户控件的创建
假设要通过计算机重现某型飞机雷达告警器在空中记录 的目标雷达信息,即当飞机飞完任务后,在地面把空中记录的 雷达信息重现出来。
设计思路是:将这段程序设计为控件的形式,使其作为一 个插件被其它程序,包括不同的语言程序调用,从而提高系统 的交互性和可移植性。
具体操作步骤是:运行 VB 6.0→文件→新建工程→新建 控件→选择“ActiveX 控件”→打开。
浏览器的activex控件系统默认的控件名称为 UserControl1,这里将其重命名为 Disp204。若一次要创建多个控件,则需对不同控件设置不同 的名称,否则在控件使用过程中将会发生名称冲突。工程名 不妨命名为 Control204。具体设计方法和一般的程序设计一 样,设计界面如图 1 所示。
上述过程实际上是将一个用户控件的有关属性,如控件
的背景、控件要处理的字符及代码等通过 Property Get 和 Property Let 过程来自动完成。前者表示给用户显示一个属性 的值,后者表示用户设置一个属性的值。对于上述 Azimuth 属 性的设置,相应的设置程序为:
Public Property Get Azimuth () As String Azimuth=txtAzimuth.Text End Property
Public Property Let Azimuth (ByV al New_Azimuth As String ) txtAzimuth.Text ()=New_Azim uth PropertyChanged "Azim uth" End Property
当控件属性被用户更改后,需要将该属性值保存,以便控 件运行时读取更改后的属性值。这里分别用 ReadProperty 和 WriteProperty 两种方法来完成。前者表示从存储器读取一个 属性值,后者表示向存储器写入一个属性值,其相应的部分程 序如下。
'从存贮器中加载属性值
Private Sub User Control_ReadProperties (PropBag As Proper- tyBag )
m_BackColor=PropBag.ReadProperty ("BackColor", m_def_ BackColor )
m_ForeColor=PropBag. ReadProperty ("ForeColor", m_def_
ForeColor )
m_Enabled=PropBag. ReadProperty ("Enabled", m_def_Ena-
bled )
Set m_Font=PropBag.ReadProperty ("Font", Ambient.Font ) txtChar_in.Text=PropBag.ReadProperty ("Char_in", "")
txtAzimuth.Text=PropBag.ReadProperty ("Azimuth", "") End Sub '将属性值写到存储器 Private Sub User Control_WriteProperties (PropBag As Proper-
tyBag )
Call PropBag.WriteProperty ("BackColor", m_BackColor, m_ def_Back Color ) Call PropBag.WriteProperty ("ForeColor", m_ForeColor, m_ def_ForeColor )
Call PropBag.WriteProperty ("Enabled", m_Enabled, m_def_
Enabled ) Call PropBag.WriteProperty ("Font", m_Font, Ambient.Font )
Call PropBag.WriteProperty ("Char_in", txtChar_in.Text, "")
Call PropBag.WriteProperty ("Azimuth", txtAzimuth.Text, "") End Sub 一个用户控件可以有很多事件,如 Click 、MouseDo wn 、 MouseUp 、MouseMove 等。要激发这些事件都需要加入相应的 代码。在控件的声明处加入 Public Event Click ()就表明该控件 有一“Click ”事件。用户编写的控件有多少事件就在声明处加多 少条。事件的触发可以使用“RaiseEvent 事件名(参数)”来完成。
用户控件的创建需要用到一些标准控件,该例中除了一
般的图形控件之外,还用到了两个标准文本控件,分别命名为
TxtChar_in 和 TxtAzimuth ,用于提供要显示的字符代码参数和 显示方位参数,在用户控件属性建立时提供接口参数。两个 时钟控件分别用于控制方位标志和显示字符的刷新延迟时间。 2.2 属性、方法、事件的建立
对于控件的使用,主要是通过设置或改变控件的属性,调
用控件的方法,激发控件的事件,来实现对控件的灵活应用。
对于上述用户控件中用到的“目标字符”、“方位”,在设计 阶段
需要创建其外部属性,目的是建立用户控件内部参数与 外部接口之间的连接,使得开发者通过设置或改变控件属性
参数对用户控件进行操作。具体创建步骤为: 打开程序,选
择工程→添加用户控件→VB ActiveX 控件
界面向导→打开→下一步→下一步→(自定义成员) 新建→分 别创建一名为“Char_in ”及“Azimuth ”的属性→下一步→选择
“Azim uth Property ”→映射到,控件(选“txtAzimuth ”,建立属性
值与接口参数的对应关系),成员( 选“Text ”,即文本类型)。
选择“Char_in Property ”→映射到,控件(选“txtChar_in ”),
成员( 选“Text ”)→下一步→完成。 在使用控件时为了将 txtChar_in 及 txtAzimuth 文本框隐藏
起来,可将其相应的 Visible 属性设为 False ,这样,在生成的控 件视图上将看不到这些文本框,但仍可以被引用。其它暂不 需要显示的信息也可以用此方法将其隐藏起来。
图 2 窗体中测试控件实例
(1) 在 Web 页的 IE 浏览器中测试:首先设置“工程→Con- trol204 属性”选项,“工程类型”选择默认的“ActiveX 控件”,“启 动对象”选择“(None )”。单击“运行→启动”, 按照系统默认的 设置,VB 便会使用本机现存的浏览器,在 Web 页中运行用户 控件的一个实例。这是一种常用的、快捷而有效的方法。
(2) 在窗体中测试:首先将创建的控件保存在一个 VB 的 标准工程中,关闭工程,然后重新打开该工程,并添加一个窗 体(设为 Form1.frm )。此时,在 VB 工具箱中便出现了一个已建 立的用户控件图标,单击该图标,然后在 Form1 窗体中创建一 个 Disp204 控件的一个实例,如图 2 所示。
该情况下,通常多采用手工方式注册. OCX 控件,注册方
法也比较简单。
假设当前使用的操作系统为 W indows 2000,在 C:\WINNT\ system32 目录下有一个 REGSVR32.EXE 文件(如果没有,可从 VB 安装盘中到该文件并将其拷到该目录下),通过该文件, 并提供编译的.OCX 控件的名称和路径,调用 COM Registry 接 口,即可实现用户控件的注册。
假设上述产生的 Control204.OCX 控件在 C:\OCX 目录中, 则相应的注册方法是:从 Windo ws 的开始菜单,选取“运行”, 在运行对话框中,输入并执行下列命令行:
REGSVR32 C:\OCX\Control204.OCX
此时,该控件已被注册到了系统中。
在 VB 中可通过下列简单操作进行引用:单击 VB 工具 箱→点击鼠标右键→选择“部件”→“控件”,即可看到系统中 已经注册了控件 Control204,此时便可选择该控件并将其添加 到 VB 的工具箱中。
若要解除注册的控件,可使用/u 参数: REGSVR32/u C:\OCX\Control204.OCX 当然,也可以在 Windows 下打开文件注册表,搜索并选择 已注册的控件,然后将其删除掉。但这种方法相对比较麻烦, 操作时需要特别细心,以免误删其它的注册信息而造成系 统出错。
事实上,REGSVR32.EXE 文件不但可以注册OLE 控件,而 且还可以注册 DLL 。而在 VB 安装盘的 \regutils 目录下还有 一个文件 REGOCX32. EXE ,专门用于注册 OCX 控件,具体使 用方法同上。
4.3 直接在注册表中注册
事实上,在Windo ws 系统中对控件的注册,就是在系统注 册表的主键 HKEY_CLASSE S_ROOT 下添加相应控件类的信 息,如类的 ID 和版权信息等。这些信息是由系统维护的,用 户通常无法直接修改。不少控件的安装程序能通过自动修改 注册表进行注册,还有一些控件的安装程序中提供了手工修 改注册表的方法。
在VB 6.0 中,系统提供了一个打包程序,可以通过创建一 个自动注册控件的 Setup 程序实现控件的注册,具体可按照 VB 的打包向导来一步步完成。
在“工程→Control204 属性”选项中,“工程类型”选择“标
准 EXE ”,“启动对象”选择“Form1”,单击“运行→启动”, 按照 系统默认的设置,VB 便会启动本机现存的浏览器,在 Web 页 中运行用户控件的这个实例。
进一步验证用户控件的方法是:通过编程,改变或重置影
响控件状态的属性值,如字符代码、显示方位的参数等,从而 验证用户控件设计的正确性。
3 用户控件的编译
控件设计完成,经测试正确后,需要将其编译成. OCX 文 件,才能移植到其它计算机中并被注册引用。 对于该例,产生编译文件的方法是:在控件设计环境中, 点击“文件→生成 ”,输入需要生成的用户控件 文件名,点击“确定”按钮,VB 系统便可执行编译程序,并在当 前的文件夹中产生一个用户控件文件 。
5 用户控件的应用
4 用户控件的注册
要想在其它系统或计算机中使用该用户控件,必须首先 在系统中进行注册,然后才能被“引用”。用户控件一旦被注 册,就可以和标准控件一样使用。控件注册的方法有多种,比 常用的方法有:
4.1 在 VB 环境中直接注册
在VB 环境中,单击VB 工具箱→点击鼠标右键→选择“部 件”→“控件”→“浏览”,搜索所要引用的控件 ,选 中后即可。这种方法的优点是注册完的控件可以直接加入到 当前的工程中使用,但是对于有些拥有版权的控件则不能使
经过上述方法设计的控件可以有两种应用方式: (1) 直接使用源代码,即开发者直接将控件文件包含在其 它工程中,使其作为新工程中的一个模块或子程序。这种方 法的优点是用户可以查看和修改控件
的代码,缺点是有很大 的局限性,对于 VB 开发的控件,只能在 VB 系统中使用;
(2) 使用编译产生的. OCX 控件文件。这种方法尽管需要 编译、注册、引用等繁琐的过程,但其适应性较强。不但可以 在 VB 系统中使用,而且还可以在其它任何支持控件的系统, 如 VC 、Delphi 等中使用。
(下转第 1982 页)
2003,7(1):59-64.
李国杰.信息服务网格——第
3 代 Int e rn et [E B /OL ]. pcities/grid/liguojie.htm. 王卷乐.地学元数据结构分析及其管理系统设计[J ]. 计算机工
程与应用, 2005,5(1):5-7.
于雷易. GIS 网络体系结构探讨[J ]. 武汉大学学报·信息科学 版, 2004,29(2):153-156. The Globus Project. Globus toolkit3.2 [EB/OL ]. www- /toolkit/downloads/3.0/.
GGF. The semantic grid community portal [EB/OL ]. /
Cannataro M,Talia D.Semantics and knowledge grids [C ].Buil- ding the Next-Generation Grid,IEEE Compu ter Society, 2004. De Roure D.Semantic Web and Grid C o m puti ng [E B/OL ]. www.semanticgrid. org/documents/.
李德仁. 空间信息语义网格 [J ]. 武汉大学学报·信息科学版, 2004,7(2):847-850.
(4)用户需求由集成本体系统转换到选定的领域节点本 体。目标节点选定后,将用户需求从通用集成本体描述的形 式转换为目标节点( 牧业和林业本体)的本体描述形式。
(5)利用中间构件部件分别在林业和牧业空间节点中查与 本体概念对应的数据,并按用户需求对数据将进行相应的加工。
(6)对数据格式进行转换,并将各级结果返还给用户。
[3] [4] [5]
5 结束语
针对空间信息资源的特点,本文对利用本体与语义网格 技术进行空间元数据的管理进行了探讨,提出了具体的空间
元数据管理框架。该框架将本体与语义网格相结合,利用空 间节点本体与通用集成本体之间的转换,实现了空间元数据 在语义层的全面连通,为整个互联网所有资源的全面共享奠 定了坚实的基础。
[6] [7] [8] [9]
参考文献:
[1] 蒋景瞳. 国家标准《地理信息元数据》研制与实现若干问题信
[10]
(上接第 1975 页)
5 结束语
长春龙嘉机场 BHS 系统安装调试完成后,经过近一年的 正常生产运行,工作一切正常,完全达到了设计要求。该系统 又成功的应用在大连周水子机场 BHS 系统,由于该系统具有 有较强的监视控制功能性能稳定,维护方便,既降低了维护人 员的劳动强度,又确保了安全生产,收到了很好的经济效益和 社会效益。
一体化技术, 2005(1):27-30.
郝富强,李珂.行李分拣系统进出港系统改造[J ].国内外机电一
体化技术, 2002,(5):81-84. Rsview32 g etting results guide [Z ].Rockwell Au tomation C o, 2004. Total solution for industrial device networking [Z ].Moxa Tech-
nologies Co, 2004.
Allen-B radley 系统综述[Z ].Rockwell Automation Co, 2003.
大连国际机场. 大连国际机场 [EB/OL ]
. www.dlairport.
com/Default.aspx. 李韬,李家启.某机场行李中转监控系统的研究与设计[J ].交通 与计算机, 2004,(4):85-87.
徐德,孙同景.可编程控制器(PLC )应用技术[M ].山东:山东科学 技术出版社, 2000.1-5.
[3] [4] [5] [6] [7] 参考文献:
[1] 王喜明,石晓梅.P L C 在机场行李系统自动控制中的应用[J ].电
子工程师, 2001,27(3):1-3.
[2] 汪胜.PLC 在浦东机场行李输送系统中的应用[J ].国内外机电
[8] [9]
(上接第 1978 页)
6 结束语
通过上述的设计过程可以看出,用户控件作为一个独立 的功能模块可以嵌入到其它应用程序中单独使用,尤其是经 过编译的用户.OCX 控件文件,更是具有很好的交互性和可移 植性。它不但可以在本地计算机上使用,而且还可以移植到 其它计算机上使用,甚至还可以在网络环境下使用,为软件的 系统集成和功能扩充提供了方便,对提升软件的设计质量和 整体可靠性具有重大意义。
上述用户 ActiveX 控件的设计思想同样适用于其它支持 控件的软件系统,具有更广泛的应用价值。
[2] 朱前飞,高芒.C O M 组件和 Ac tiv e X 技术在 B/S 体系结构中的
应用[J ].计算机工程与设计, 2005,26(3):654-656. 岳玉芳,尤忠
生,张玉双.基于 COM 的
VB 与 Matlab 混合编程 [J ].计算机工程与设计, 2005,26(1):61-62. 姚静,齐蓉,李玉忍. VB 调用 MATLAB 的方法及其在故障 诊断中的应用 [J ]. 计算机工程与设计, 2004,25 (11): 2108-
2110.
刘友生,陈一平,朱丽霞.基于 VB.NE T 的语音复读机设计与实 现[J ].计算机工程与设计, 2006,27(10):1889-1891. 陆垂
伟.Dc o m 及 Activ e X 技术在泵站远程检测管理系统中的 应用[J ]. 计算机应用与软件, 2006,23(6):79-81. 常晓波,刘
颖.Visual Basic 6.0 高级编程[M ].北京:清华大学出 版社, 2003.
龚沛曾,陆慰民,杨志强.V isual Basic 程序设计简明教程(6.0 版)
[M ].北京:高等教育出版社, 2001.50-142. [3] [4]
[5] [6] [7] 参考文献:
[1] 李志伟,郭峰.基于二进制数据库的信息搜索算法[J ].计算机工
程与设计, 2005,26(10):2759-2761.
[8]
Your request could not be processed because of a configuration error: "Could not connect to LDAP server." For assistance, contact your network support team.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
ActiveX控件打包、签名、嵌入详解
« 上一篇
中国邮政储蓄银行OA系统故障解决问答
下一篇 »
发表评论