ActiveX控件用于DHTML开发

来源:互联网 发布:paas容器集群优化 编辑:程序博客网 时间:2024/04/29 16:30
 

【提要】动态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&quot;"
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&quot;"
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、为控件打包
运行VB6的“安装程序向导”可以将已完成的工程生成自解压CAB文件,选择“创建Internet下协载安装程序”项,按提示完成即可。

原创粉丝点击