|
|
 |
首页 … 技术文档 Technical Articles |
|
| |
| |
|
| (时间:2007-6-24 19:34:27 共有
人次浏览) |
|
ActiveX控件用于DHTML开发 国防大学图书馆技术室 王渤
【提要】动态Web页面DHTML的开发方法很多,如使用扩展标记语言XML、服务器端CGI(或ASP)、基于ActiveX Control(控件)动态实时页面的开发;本文将主要讨论第三种方式,即ActiveX Control(控件)动态实时页面的开发,并通过VB5的实例,说明自制控件的方法。
一、ActiveX控件的使用 ActiveX控件用于DHTML是将控件嵌入主页中,用户通过浏览器访问该主页时,浏览器会自动下载控件,并在用户机器上注册,控件注册后就驻留在用户本地机器上,下次再访问相同的主页,浏览器将直接运行用户本地的控件。ActiveX控件可以封装和种强大的功能,如与WEB数据库的查询接口、与服务器的资源共享、与本地工作站的交互操作、资料的自动提交与反馈等复杂的功能,当然对于来历不明的ActiveX控件应小心使用。 要使用ActiveX控件,应在Web页中加入ActiveX控件,在HTML页面中使用ActiveX控件包含三个基本操作: 将控件放入HTML中; 将该控件下载给用户; 在用户机器上安装该控件。 对于IE用户,在HTML中插入ActiveX控件比较简单;如果同时兼顾IE和Netscape用户,则较为复杂。 在IE中使用ActiveX控件,需要使用HTML中的标志是<OBJECT>,该标记几个重要的参数特性有: 1.ID:为控件提供一个标识名称,为HTML代码提供一种访问该控件的入口。 2.CLASSID:是该控件唯一的UID,告诉IE装入哪个对象。如果使用已经开发好的控件,它的CLASSID可以在系统的注册表中查找。在注册表中展开HKEY—CLASSES—BOOT项,可以看到按字母顺序排列的注册表,找到需要使用的控件名,展开时可看到—个CLASSID活页夹,里面就是该控件的CLASSID。 3.CODEBASE:如果在用户机器上没有控件的当前版本,该参数告诉用户浏览器在哪里可找到要下载的控件和最新版本号.当控件作了修改后,可以更改版本号强制用户重新下载。 4.PARAM:该标记用于设置控件的初始属性值,它有两个特性:Name 和 Value,即属性名称和属性值。 此外还有一些标记,如:Width表示该控件所占的宽度,Height表示高度等,总体来说,这样一个插入控件的HTML代码和插入Java Applet的HTML代码非常相似。 以下是嵌有ActiveX控件的HTML代码例程: <OBJECT ID= "MyControl" CLASSID="classid:051D1245 - 9821 - 24G5 - 87CI - 01A044C9698AC" CODEBASE="http:/ /www.abcd.ef/mycontrol.ocx#version = 1, 0 ,0 ,0" WIDTH = 200 HEIGHT = 100 ALIGN = center HSPACE = 0 VSPACE = 0 > < / OBJECT> 如果希望控件还能在Netscape中运行,除了Netscape需加装插件外,HTML也要加一些附加标记。如果是自己开发的OCX控件,则有些用户第一次访问时除了下载OCX文件外,还要下载相应的DLL文件,使用VB5开发的OCX控件,可以打包成在客户端自解压安装的CAB文件(在以下详述)。以下为Netscape中的例程: <OBJECT ALIGN = “CENTER" CLASSID=“clsid:051D1245-9821-24G5-87CI- 01A044C9698AC" WIDTH =“600" HEIGHT =“300" ID =“marquee"" CODEBASE="http:/ /www.abcd.ef/mycontrol.ocx#version = 1, 0 ,0 ,0" > <EMBED ALIGN = "CENTER" CLASSID = "clsid:051D1245-9821-24G5-87CI-01A044C9698AC" WIDTH = "1200" HEIGHT = "900" ID ="marquee"" CODEBASE="http:/ /www.abcd.ef/mycontrol.ocx#version = 1, 0 ,0 ,0" > TYPE = "application / oleobject" ></ OBJECT>
二、 创建自己的ActiveX控件 创建ActiveX控件的工具一般使用VC,但是由于VC较难掌握因此创建ActiveX控件不很普及,微软从VB5开始可以创建ActiveX控件即生成OCX文件,并可以打包成自解压CAB文件,使用户在浏览器上能够自动下载与安装。用VB5.O创建ActiveX控件的基本步骤和过程如下例所示: 1、创建一个ActiveX控件工程* 在“文件”选单中选择“新建工程”,然后双击“ActiveX控件”图标,生成一个控件工程项目(缺省名UserControl1)。此时设计窗口显示一个类似于窗体的接口(无边框),其属性窗口也类似于窗体的属性窗口,只是有常用的属性没有了,增加了一些一般窗体不具有的属性。 选取“工程选单”最下面的“UserControl1属性”项,在对话框中改工程名称为“MyCtr”。在属性窗口中改控件名称为“MyControl”。在控件的设计窗体中加入一个Label控件,改名为“lblTime”,设其“AutoSize”为“True”,“Caption”属性为空;再在控件设计窗体中加入一个Timer定时器控件,设定时器的“Interval”属性为1000(每秒发生一次);在Timerl-Timer()过程中加入如下代码: IbITime.Caption=Time ’返回系统当前时间 将当前工程保存。由于控件工程不能独立运行,需要创建一个新的工程来测试一下设计的新控件。 选取“文件”选单上的“添加工程”,创建一个“Standard exe”工程,并将控件工程的设计窗口关闭,这时会发现在控件工具栏的最下边出现了一个名为“MyControl”的新控件。将其放至Forml窗体内,窗体上会出现一行文字,显示的正是当前时间,这就是新创建的MyControl控件。 为使控件具有更实用的属性、事件和方法,需要为控件添加属性、事件和方法。
2、添加控件的“属性” 双击 "MyControl"控件,进入其代码窗口,选择"工具"选单中的"添加过程"项,在对话框中输入名称为 "UpdateInterval",类型选"属性",关闭对话框后代码窗口内将出现两个空过程,填写代码如下: Pubic Property Get UpdateInterval() As Variant UpdateInterval = Timerl.Interval End Property Public Property Let UpdateInterval(ByVal NewValue As Variant) Timerl.Interval = NewValue PropertyChanged "UpdateInterval" End Property 其中前者用于获取UpdateInterval属性,后者用于设置UpdateInterval属性。 现在关闭控件设计窗口,打开测试工程的窗体,点击窗体中的控件MyControl,看一下其属性窗口,出现了一个 "UpdateInterval"属性,且值为1000,这是我们最初为控件设定的Interval属性。现在改变该属性值为3000,会发现控件上时间更新慢了,与原Timer控件属性一样。 3、添加控件的“事件” 在测试工程的代码窗口中,当前只有GotFocus、LostFocus、DragOver和DragDrop四个事件;而一般常用的事件包括Click、DblClick、KeyDown、KeyPress、KeyUp、MouseDown、MouseMove和MouseUp,下面以Click为例进行说明。 选取“工具”选单中“添加过程”项,在名称中填写“Click”,类型为“事件”。我们会发现代码窗口中“通用”项下出现如下代码: Option Explicit Public Event Click ( ) 注意这是的“Click”与鼠标的Click毫无关系,为了将它们联系起来,在控件工程的代码设计窗口中加入MyTime 、IblTime的Click事件,代码如下: Private Sub MyTime-Click ( ) RaiseEvent Click End Sub Private Sub IblTime-Click ( ) RaiseEvent Click End Sub RaiseEvent的功能是把控件或其上的子控件的事件进行转发,因为控件总是由其它的子控件组成,比如上面lblTime的Click事件转为控件的Click事件。 现在关闭控件设计窗口,打开测试工程,在MyControl的过程列表中,发现多了事件Click,点击Click,添加代码如下: Private Sub MyControll-Click ( ) MyControll . UpdateInterval = 3000 MsgBox (`UpdateInterval:` &MyControll . UpdateInterval ) End Sub 运行测试工程,点击窗口中显示的时间,会弹出一个Message对话框,显示了刚设定的UpdateInterval属性值是3000。 4、添加控件的“方法” 选取 "工具"选单中 "添加过程"项,在对话框中填写名称 "CallMe",类型为 "函数"。代码窗口将产生如下代码: Public Function CallMe ( ) As Variant MsgBox(`当前方法正在运行!`) '加入本行代码 End Function 在测试工程的MyControll-Click()过程中加入语句:MyControll. CallMe,运行后点击显示时间处会出现使用此方法产生的Message对话框。 5、为控件打包 运行VB5的“安装程序向导”可以将已完成的工程生成自解压CAB文件,选择“创建Internet下协载安装程序”项,按提示完成即可。
|
|
|
【打印该页】 【关闭窗口】 |
|
此技术资料来自网络,仅供参考。未经许可,不得转载。
若有侵权,请及时与我们取得联系! |
| |
|
|
|
|