发新话题
打印

[方法技巧] 创建ActiveX财务组件

创建ActiveX财务组件

组件将包含一组相关的方法(函数),用来提供脚本语言所不具有的功能。由于 VBScript不提供财务函数,所以您必须通过自己的Finance服务器组件来提供对VisualBasic财务函数的使用能力。该服务器组件能提供所有的VisualBa sic财务函数,包括DDB函数(双倍余额递减法)、FV函数(未来值)、IPmt 函数(支付利息)、IRR函数(内部回报率)以及其他函数。不过,在本教程中,您将只使用FV函数,基于固定利率及等额定期支付方式,返回一笔年金。6 D5 a. y4 G* ]7 X* y
, g  g+ b8 f6 K3 b6 ?2 I
启动VisualBasic5 Q! E! z* Z1 h* M
# h; {1 U# V& m# j4 o
单击“开始”按钮,指向“程序”,然后指向“MicrosoftVisualBasic5.0”
% H1 L! y- T5 a7 c" ^) h9 L/ {4 \3 [
单击子菜单中的“VisualBasic5.0”,运行编程环境。# U! }. @- H+ G* D2 t

  R; V: [9 @; i, ~" J" O& ~4 I开始并命名一个工程
5 {; J; d: R0 G- n7 C8 x6 A  C/ B- P) i. Q' w
在“NewProject”对话框中,双击“ActiveXDLL”。3 `3 l7 ~' i  {' A7 c% A

* D! T0 c+ E: W5 U- ]) @在“Project”菜单上,单击“Project1Properties”。' D& ~' g0 f/ l8 w7 N4 Q' y" I

3 m7 y. a; ~, I( Y在“General”属性页的“ProjectName”框中,键入“MS”。
0 I% F! \0 P3 S  |  g( a2 B2 p! i& c* O& W, B; J
选择“UnattendedExecution”。
6 f) b# t* ?, f  H1 m9 R3 B+ x4 Y1 m( S! T3 A) d4 c
注意选择该选项表明这个工程运行时不需要用户交互,并且将不具有用户交互的基础。
$ g3 D& F# d$ A8 _) S. D& a3 j$ ^" D& L4 g9 |( P
单击“OK”。
: l4 Q; ^2 x. t& B
, B( X" T. D. Q: ]8 ~% T7 K* R现在工程被命名为“MS”。以后,您将从ASP脚本中以MS.Finance的形式引用 Finance服务器组件。' w( K0 ]; y; R4 w( o; o' V/ v7 R

% W" ^( K! w4 k& T. q" v将FinanceClass添加到工程中/ ?8 x- l3 w' m1 ~# U
9 j( j5 w# @- s7 l, R0 G* A! o; m) F
在VisualBasic中,若要创建具有一组可以调用的函数组件,必须定义一个类。一个类包含一组方法和属性。在您的工程中,类就是您说明财务方法的地方。
: s- z1 |2 c7 N$ W" Y5 s1 B, c; C  R, p: X
按下F4键打开类模块的“Properties”窗口,双击“Name”属性并键入“Func tion”,然后按Enter。
- o4 T9 o" E' q  j! [, M( o6 y, v$ `" V5 @1 v% _8 P+ e$ |
双击“Instancing”。
  D3 b% p* {0 [0 P/ k3 P) w/ b1 L1 @& x! M
单击箭头,然后选择“5-MultiUse”。# D- b# x/ |: X& W8 [

7 i+ p) R, v0 v" @* t5 W进一步学习VisualBasic财务函数; @) a+ G" ?- ~1 m0 A6 [' s
* h& D) Q( M5 _6 l* V
VisualBasic的帮助系统描述了可以使用的财务函数。
$ [( ~- }0 I0 e$ F9 D/ x
2 |: _/ C/ \* ~& M: ~$ W% e单击“Help”。
/ [* h- A% z4 j
# O) ~  G6 x/ A" R/ k选择“MicrosoftVisualBasicHelpTopics”。
( O2 o  K. X2 f
( f  R' z4 p# t0 ^. A8 c选择“Index”选项卡,然后键入“financialfunctions”作为查找的文字。
# M6 |- s- c$ P5 x
$ T; U+ B  e0 L双击“financialfunctions”索引条。
1 Z4 {3 c1 a, H1 r2 I( X1 |" O6 F1 ^5 P+ ~* Y9 ?  G7 s
单击“FVFunction”,学习该函数。
( V8 B! N. A3 Y0 C  e0 B7 s- t# W+ k) u3 Z0 S
学习完财务函数后,关闭“VisualBasicHelp”对话框。
4 N. o0 @5 P+ l; p& {3 f' d
* d$ e$ H0 d3 c: Z3 h/ a4 i+ ]将CalcFV函数添加到Finance类& F% W. M% r! R& T8 R
# Z# h8 K) X/ F6 g: u3 }
Finance服务器组件需要一些代码。这些代码让使用您组件的语言可以调用Vis ualBasic内建的未来值函数。
8 A0 A* m5 H2 ]. E/ `+ [
* `0 t5 m. T0 z4 {将下列行复制并粘贴到Finance类的代码窗口中:4 f9 X; F9 M& Z' W& G

5 L4 B  v( x. q1 K& @  S: nPublicFunctionCalcFV(rate,nper,pmt,Optionalpv,Optionalwhendue)
0 {: K0 \' W8 C7 M
3 R5 i6 R! ?' v5 ^) N. X4 D# p1 _CalcFV=FV(rate,nper,pmt,pv,whendue)
$ H, @' P' b9 V% y4 N$ M$ e7 S  D9 O3 g9 y, v
EndFunction: x/ S5 T9 `5 ~: y. |9 g$ }/ b
  k3 w8 D+ a. n0 v' M5 ]
添加组件的入口点; H8 ^; I* Y$ }! U

. A/ l* t+ `, {+ A% o+ _4 t所有服务器组件都需要一个入口(起始)点。这是当对象第一次可用于一种语言时,将被调用的代码。在VBScript中,当您使用Server.CreateObject时,将创建对象的一个实例。当执行Server.CreateObject语句时,(由VisualBas ic创建的)服务器组件上的SubMain过程将被调用。! k5 x, Y2 c' ^* h6 }7 o

0 k  ~* U. a9 X8 w当您的财务组件被调用时,它不需要任何特殊代码来初始化自身。因此,需要提供一个空的(没有VisualBasic语句的)SubMain过程。
- C% Q# r; J6 u. }' b
8 p0 s* j' d8 b  L选择“Project”菜单中的“AddModule”。
' u/ B) Z$ J1 c+ W
% M5 [3 l) ^1 E# ^& c, l# l$ q+ C在“Module1”对话框中,双击模块图标。5 ?$ b6 ?# A. |- }3 k

% l6 j* u, [, J7 x% @  Z7 Y在Module1代码窗口中,键入SubMain。
) b- ^# _1 B+ l, w
3 W1 L6 U5 j3 T& n, f# c按下Enter键。+ K! J3 K! H' x

$ k2 |6 j: t% d; r0 D$ ^5 K- k+ v将自动进入如下代码:
- m& p( y& n  x4 A) V% r5 u6 ?6 w1 h% }5 G
SubMain()
) K7 q; ~& y# H4 @6 B# o9 M1 u1 h$ [& C2 m, r& T
EndSub
% n, ^6 ], B1 O5 s  t% y5 L6 K" Q+ `9 |, T! o7 n+ @
保存Finance工程
* w0 l! c0 R9 r/ o% S
* o# i% K6 ]! `+ {3 Z当保存所作的工作时,将询问您是否保存VisualBasic工程的全部3部分。其中包括工程文件、类模块和代码模块。9 L1 L: Z: D+ S0 R% }% Q  b
4 r& l2 ?; f% I. a
打开“File”菜单。- s9 E( O/ K* q/ N! v+ ]

% k  z" `: w8 i, L9 v6 t/ P. o选择“SaveProject”。( O8 @# `* _( Z
2 F6 U* `7 [. F$ A5 g$ y
在“Filename”文本框中,键入“Finance”。选择localhostWeb服务器上的如下路径:DriveLetter:WinntSystem32Inetsrv,其中DriveLetter是适当的驱动器号。(如果您没有接受默认的安装目录,请用您的安装目录替换Winn tSystem32。)
7 Q1 W$ M4 }& I4 e" @, V9 l7 Q+ R0 D; A- l& l1 ~
单击“Save”按钮。
0 }) X& F" x: E( l4 w+ p; r# \# D, S) d4 ?9 A0 L2 I: T
如果在此以前,另一个用户已经学完了教程的这一部分,将出现一条消息,提示文件已经存在。请用您的文件覆盖旧文件。; i9 |5 ^5 }. E8 D6 s3 r3 B

) O: H# T7 l, H& g: K4 r, C双击“Filename”文本框中的值“Project1”,选中它。) L1 G. x9 T& ~# D8 n( h; c
$ Z  y  L0 t5 E; X% \! J# D
为工程文件键入名称“Finance”(.vbp)。
2 o! S7 h1 s  R/ m4 G0 n% R" L$ `- g; Y. l, v4 a) j: i. F  f/ f% l' I
单击“Save”按钮保存工程。$ q! x# f( v! ~) d) d7 m# k# C
. |4 A- r- N& s+ ]% ?- D. Z$ E
如果在此以前,另一个用户已经学完了教程的这一部分,将出现一条消信息,提示文件已经存在。请用您的文件覆盖旧文件。* H( Y) e4 f" V9 i
. p, z, Y2 w  p( l0 J' H+ S
成为“进程内(In-Process)”组件
5 e) w* A" U" J( [
" j. E+ e4 T( e. GVisualBasic允许您创建进程内ActiveX组件(通常称为OLE自动服务器)和进程外ActiveX组件。一个进程内ActiveX组件是一个动态链接库(带.dll 后缀),由调用它的进程进行加载。一个进程外ActiveX组件是一个可执行文件(带.exe后缀),当它被应用程序调用后,以独立进程的状态运行。由于进程内组件与调用它的程序在同一个进程空间,所以性能比进程外组件要佳。
9 S3 [/ H1 e) S6 {4 h8 k4 o" H' V
. V$ Z$ D6 p3 B& f使Finance服务器组件成为进程内ActiveX组件; |, X' }- i2 f9 Q9 j2 g7 G

4 N6 H& B- S' D- C打开“File”菜单。4 G5 O! L! F8 S6 u  ]  N

3 K8 L. y+ S. A; v: c) p* O1 t: n选定“MakeFinance.dll”。
# k( r( y8 W3 L( x
9 W, T5 j' s- J  ~; l$ g单击“Options”按钮。: u& Z" d1 x/ z" l! ~- U, ~9 q  R0 O
' ~+ z' J" S- z/ K; w6 ]
选定“AutoIncrement”复选框。+ K; v8 f1 P6 X6 c5 y$ @

7 @; T8 a8 ~' B单击“OK”。' s$ W" W, g# i. q6 z
. L2 F- s$ a, T! J; l9 b
键入DriveLetter:localhostWinntSystem32InetsrvFinance,其中Drive Letter是适当的驱动器号。(如果您没有接受默认的安装目录,请用您的安装目录替换WinntSystem32。)7 i4 w8 y) g! ?. _0 G' v! X# c8 v

  l0 o* y/ K6 f. m- k6 W, J如果在此以前,另一个用户已经学完了教程的这一部分,将出现一条消信息,提示文件已经存在。请用您的文件覆盖旧文件。* u6 K- O* g; E$ w
, f. }- c6 W  z, I% l& k# Q
退出VisualBasic。
" H# K- p& X' m0 E2 f- v) [# M, t" i
注册Finance服务器组件
% v2 M) K/ p& n
6 `: K  b8 a% L- {3 W8 s& ?所有服务器组件都必须注册。WindowsNT和Windows95用系统注册表来追踪哪个服务器组件是可用的。在您的计算机上将Finance服务器组件注册后,就可以在VBScript和所有兼容OLE的语言中调用它了。, _0 Q0 B$ _# K2 v

: Z# ]9 X/ I6 V打开一个命令提示符窗口。. q6 ~& y+ z' I0 _4 c$ o4 m4 z
  q- E/ M6 A7 U3 [' T9 D% l
在命令提示符后键入cdDriveLetter:localhostWinntSystem32Inetsrv,其中DriveLetter是适当的驱动器号。(如果您没有接受默认的安装目录,请用您的安装目录替换WinntSystem32。)
: h* G" Q# c$ W' P7 ~# E# @
; {% Y& W1 c, V( h7 u; h3 p按下Enter键。/ X# @+ G# U) I
) h( q. |" r  b) m: t
键入regsvr32Finance.dll。) Y0 u+ ]' G- c# I2 q/ S/ ^- `" F
2 \- y( ~! B/ G$ J. w( h2 X5 G
按下Enter键。1 i7 b" l* _0 m5 g  }

# s4 B3 s; Y; a$ v* `  ]9 |1 R当出现一个对话框显示“DllRegisterServerinfinance.dllsucceeded”时,请单击“OK”按钮。+ F; }. A! K5 g; {! V$ @0 n6 X
: E+ ^) t/ z. d0 i  {4 b
关闭命令提示符窗口。
发新话题