当前位置: 首页 > 图文教程 > 网络编程 > ASP > ASP讲座之十:自己动手编写组件

ASP
ASP基础讲座(下)
解决IIS5 HTTP500内部错误
ASP 3.0高级编程(四十六)
ASP 3.0高级编程(四十五)
ASP 3.0高级编程(四十四)
ASP 3.0高级编程(四十三)
ASP 3.0高级编程(四十二)
ASP 3.0高级编程(四十一)
ASP 3.0高级编程(三十九)
ASP 3.0高级编程(三十八)
ASP 3.0高级编程(三十七)
ASP 3.0高级编程(三十六)
ASP 3.0高级编程(三十五)
ASP 3.0高级编程(三十四)
ASP 3.0高级编程(三十三)
ASP 3.0高级编程(三十二)
ASP 3.0高级编程(三十一)
ASP错误代码说明
jscript错误代码及相应解释大全
ASP错误处理

ASP讲座之十:自己动手编写组件


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 51 ::
收藏到网摘: n/a

在前面的内容中,我们学习了组件的使用,网上的组件虽然不少,但往往小小的一个组件就要你掏出美元来,而国产的组件又太少,想掏点人民币还没地儿好掏,算了,您干脆自己写吧,其实编写组件并不难,无非是刚开始写低水平的组件,慢慢开始写高水平的组件而已。要编写ActiveX Server Components,有多种工具可供选择:Visual Basic、C++、Java等等,这里选择最简单的VB6.0,只要你以前用过VB,包你不到1小时之内,做一个小组件出来。

一、 组件编写速成——编写组件最基本的步骤
本部分主要讲解编写组件的基本步骤,如果你有进一步学习的欲望,请参照VB6.0帮助文档中“创建 ActiveX DLL”部分(MSDN Library中文档文件名为Vbcon98.chm)。
目的:编写一个最简单的加法器组件,这个组件有两个属性,一个方法。我们从最熟悉的地方开始,那就是先假设这个组件已经存在,看看在ASP使用该组件的代码:
<%
Dim objSum
‘ 先创建该组件组件标识为 TestDll.Sum
Set objSum = Server.CreateObject("TestDll.Sum")
‘ 记住TestDll.Sum 中的“TestDll”,“Sum”。
objSum.augend = 10.52       ‘augend 属性为被加数
objSum.addend = 382.41      ‘addend 属性为加数
Result = objSum.Plus        ‘Plus 方法求和
Response.Write Result
Set objSum = Nothing
%>
请务必记住这几个关键词:TestDll、Sum、augend、addend、Plus,这将与接下来的工作紧密关联。下面是详细步骤:
1. 运行VB6.0,在“文件”菜单中,单击“新建工程”→在“新建工程”对话框中,双击“ActiveX DLL”图标→Visual Basic 将向该新工程中自动添加一个类模块 Class1(在“工程资源管理器”中可以看到,如图1)。
2.按 F4 键打开“属性”窗口。双击“名称”属性把“Class1”改成 Sum。
3.在“工程”菜单中,单击“工程1 属性”打开“工程属性”对话框。在“工程名称”中填写TestDll,在“工程描述”中填写“创建ActiveX DLL示例”。如图2。
    提示:ASP创建组件中的标识TestDLL.Sum这两项的意思明白了吧。
4.在“文件”菜单中,单击“保存工程”,分别使用下面的名称保存工程文件:SetupDll.cls和SetupDll.vbp。
5.为 Sum 类创建属性:
(1) 在“工具”菜单中,选择“添加过程”打开“添加过程”对话框。在“名称”框中,输入augend,单击“属性”,然后单击“确定”,如图3(注意:当前焦点应在代码窗口,否则“添加过程”菜单无效)。
(2) 在“工具”菜单中,选择“添加过程”打开“添加过程”对话框。在“名称”框中,输入addend,单击“属性”,然后单击“确定”。
6.为 Sum 类创建方法:
在“工具”菜单中,单击“添加过程”打开“添加过程”对话框。在“名称”框中,输入Plus,在类型中,你可以选择“子程序”或“函数”,本例中由于要返回加数与被加数之和,故单击“函数”,然后单击“确定”。
现在,前面ASP代码中的五个关键词语都已用上,这下很多东西都明白了吧。
7.类模块Sum代码窗口中所有代码如下:
Option Explicit
Private mdbl_augend As Double
Private mdbl_addend As Double

Public Property Get augend() As Double
    augend = mdbl_augend
End Property

Public Property Let augend(ByVal vNewValue As Double)
    mdbl_augend = vNewValue
End Property

Public Property Get addend() As Double
    addend = mdbl_addend
End Property

Public Property Let addend(ByVal vNewValue As Double)
    mdbl_addend = vNewValue
End Property

Public Function Plus()
    Plus = augend + addend
End Function
你已经注意到以上代码与系统生成的代码有点不同,主要是Public Property Get augend() As Variant部分用实际的数据类型Double替代了。
注意:实际上,当执行 x = objSum.augend 语句时,调用的是 Property Get 过程,获取mdbl_augend的值,而执行 objSum.augend = 10.52 语句时,将调用 Property Let 过程