VB 版 (精华区)
发信人: bloom (├┝┞┟┠┡┢┣), 信区: VB
标 题: 九、用Visual Basic 6.0设计ActiveX/ActiveX Doc
发信站: 哈工大紫丁香 (2000年08月09日15:26:34 星期三), 转信
基于部件的开发是目前最流行的方法论。
程序员可以把经过测试的标准部件装配成应用程序,所以应用部件开发方法可以缩
短编程时间,并开发出更强有力的产品。转向部件软件已成为软件工业中最引人注目的
一大趋势。在Windows 平台上的部件编程,主要是微软公司致力的部件对象模型 (COM)
,包括 Automation 和 ActiveX 规范,使用户所创建的软件部件可以与购买的软件部件
一起顺利运行。
VB6使得实现ActiveX 部件的创建更加容易。Visual Basic 为快速创建、调试和部
署软件部件提供了 ActiveX 控件、ActiveX 文档、代码部件以及提供对象的应用程序等
向导或工具。
确定部件的类型可以这样考虑:如果需要提供服务的部件是不可视的,就要建立一
个代码部件,或者是ActiveX EXE或者是ActiveX DLL。 如果所需要建立的部件能够与您
的应用程序运行在同一个进程中,则应该建立一个ActiveX DLL。例如,能够执行复杂计
算的部件就属于这种情况。
如果您需要的是一个可视的部件,并且在设计时能够被拖放到一个应用程序中,那
么应该建立的是ActiveX控件。例如,一个能够正确格式化并验证电话号码的“电话号码
”控件,就属于这种情况;这样的控件无疑在许多应用程序中都是有用的。
以下仅以VB6本身带的例子(建立一个ActiveX DLL,向外提供一个将字符串顺序颠倒
的函数)为例,作一简单讲解:
(1)首先新建工程,类型为“ActiveX DLL工程”。
(2)VB 将自动为该工程自动添加一个类模块 Class1。
(3)按 F4 键打开“属性”窗口。双击“名称”属性并把它改成 Thing。以后在通过
类创建对象时需要使用这个名称。
(4)Instancing 属性的缺省值是 MultiUse,不必改变。
(5)在“工程”菜单中,单击“Project1 属性”打开“工程属性”对话框。选择“
通用”选项卡,填写以下信息,然后单击“确定”。
工程名:ThingDemo ,同时用作部件的类型库的名称,如果两个部件各自提供了一
个 Thing 类,那么需要对类名进行完全的限定,以区分到底要使用哪一个部件的 Thin
g 类,例如 ThingDemo.Thing。
启动对象:Sub Main()。
工程描述:描述出工程的功能或作用等
(6)添加一个模块,并在模块中键入以下代码:
Public gdatServerStarted As Date
Sub Main()
'部件开始时要执行的代码,
'对第一个对象的请求作出反应。
gdatServerStarted = Now
Debug.Print “E xecuting Sub Main”
End Sub'为对象提供唯一标识符的函数。
Public Function GetDebugID() As Long
Static lngDebugID As Long
lngDebugID = lngDebugID + 1
GetDebugID = lngDebugID
End Function
(7)保存工程。工程名为 ThingDemo。
(8)接下来,要为类创建属性,这需要在类模块中添加公共变量和属性过程。要为类
创建方法,需要在类模块中添加 Public Sub 和 Public Function。下面的步骤为 Thi
ng 类创建了两个属性和一个方法:
Name 属性是可以由客户应用程序检索并设置的字符串。
DebugID (只读)属性返回一个顺序号,表示 Thing 对象创建的次序。
ReverseName 方法颠倒 Name 属性中字母的顺序。
(9)在类模块中声明
Public Name As String
(10)在 Thing 类模块中创建一个只读的属性DebugID,请加入以下代码:
Private mlngDebugID As Long ' 加到声明部分
Public Property Get DebugID() As Long
DebugID = mlngDebugID
End Property
由于 DebugID 是只读的属性,因此客户程序仅能读取而不能修改它。引用的方法是
对象名.属性,例如:
Private Sub Command1_Click()
Dim t As ThingDemo.Thing
Set t = New ThingDemo.Thing
MsgBox t.DebugID
End Sub
(11)创建 ReverseName 方法:
在“工具”菜单中,单击“添加过程”打开“添加过程”对话框。在“名称”框中
,输入 ReverseName。单击“子程序”和“公共的”,然后单击“确定”。
在 Thing 类模块的新的 Sub 过程中输入下列代码:
Public Sub ReverseName()
Dim intCt As Integer
Dim strNew As String
For intCt = 1 To Len(Name)
strNew = Mid$(Name, intCt, 1) & strNew
Next
Name = strNew
End Sub
(12)类模块有两个内置的事件:Initialize 和 Terminate。Initialize 事件过程
中的代码在创建对象时首先执行,领先于其它任何设置属性或执行方法的动作。
在对象的所有引用都被释放以后要执行 Terminate 事件中的代码,然后对象就被破
坏。
在VB的例子中,加入了一些代码来观察对象被创建和销毁的状态提示代码,在此忽
略。
(13)至此,整个工程建立完毕,就可以测试乃至编译了。
(14)测试的方法很简单,再“添加”一个测试工程,然后将测试工程和上述的工程
组成一个“工程组”。然后在“工程”菜单中,单击“引用”打开“引用”对话框。选
择“ThingDemo”,然后单击“确定”。这样测试工程就可以使用 ThingDemo 了,包括
属性、方法、事件等。
ActiveX EXE 的设计方法和ActiveX DLL一样,只不过DLL运行在调用者进程,而EX
E拥有自己的进程,甚至可以被部署在网络中的任意一台机器上,只要他们支持 DCOM 即
可。
ActiveX 控件与ActiveX DLL 有所不同,控件一般都是可视的,而DLL都是不可视的
,可以接受用户的输入和向外部显露某种信息。有了VB6,其设计方法却并不复杂,读者
有了上述基础,再稍微阅读一下MSDN资料,就可以轻松设计自己的控件。
--
├┝┞┟┠┡┢┣ ※↑
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.226.226]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:6.233毫秒