ccidnet????

出版日期:2000-11-29 总期号:396 本年期号:46

本期导读
热点聚焦
硬件世界
信息电器
软件天地
现代办公
网络时代
CCE评测
电脑教育
编读往来
货币的大写转换

叶德新

  在财务应用软件的票据显示和打印时,经常要将输入的数字金额转换成汉字大写金额,为缩短软件的开发周期,我们可以先将该转换功能用类实现,然后在以后的软件中直接调用该类,下面我们来看看用VB是如何实现的。


  建立ACTIVEX.DLL文件


  首先建立ACTIVEX.DLL文件,选文件菜单下新建,然后在新建窗口中双击ACTIVEX.DLL选项。将工程名改为MONEYDX,在类模块代码窗口中,加入以下代码。

  Option Explicit

  Public MONEY As String ′一定为Public

  Private MYDATA As String

  Private backdata As String

  Dim MYSTR, MYSTR1, MYSTR2, MYSTR3 As String


  添加过程属性


  选工具菜单下添加过程选项,在添加过程的窗口的名称框中填写“GETDATA”,选属性单选钮,为该文件添加属性。

  Public Property Get GETDATA() As Variant

  GETDATA = backdata

  End Property


  添加过程及函数


  按相同的方法添加如下过程及函数:

  Public Sub MYPROC()

  Dim INTMONEY As Long

  Dim LOWMONEY, POSITION, LENGHT As Integer

  MYDATA = ″仟佰拾亿仟佰拾万仟佰拾元″

  MONEY = Trim(MONEY)

  POSITION = InStr(MONEY, ″.″)

  IF POSITION <> 0 Then

  LOWMONEY = Mid(MONEY, POSITION + 1, 2)

  INTMONEY= Left(MONEY, POSITION - 1)

  LENGHT = Len(Trim(INTMONEY))

  MYSTR = Right(MYDATA, LENGHT)

  backdata = DATALOOP(LENGHT)& CHANGE(Val(Left(LOWMONEY, 1))) & ″角″ & CHANGE(Val(Right(LOWMONEY, 1))) & ″分″

  Else

  LENGHT = Len(Trim(MONEY))

  MYSTR = Right(MYDATA, LENGHT)

  backdata = DATALOOP(LENGHT) & ″整″

  End If

  End Sub

  转换函数:

  Private Function CHANGE(DATA As Single) As String

  Dim DXMONEY As String

  DXMONEY = ″零壹贰叁肆伍陆柒捌玖拾″

  CHANGE=Mid(DXMONEY, DATA + 1,1)

  End Function

  循环过程:

  Private Function DATALOOP(DATA As Integer) As String

  Dim COUNT As Integer

  COUNT = 1

  Do While COUNT <= DATA

  MYSTR1 = CHANGE(Val(Mid(MONEY, COUNT, 1)))

  MYSTR2 = Mid(MYSTR, COUNT, 1)

  MYSTR3 = MYSTR3 & MYSTR1 & MYSTR2

  COUNT = COUNT + 1

  DoEvents

  Loop

  DATALOOP = MYSTR3

  End Function


  测 试


  选新建菜单下添加工程选项,在工程2窗体上添加TEXT1、TEXT2及COMMAND1控件,输入以下代码:

  Private Sub Command1-Click()

  Dim mydata As New Money

  mydata.Money = Text1

  mydata.MYPROC

  Text2 = mydata.GetData

  End Sub

  在TEXT1 中输入数据测试正确与否。

  当确认无误后,选择文件/生成MONEYDX.DLL 选项。这样VB 将会编译并创建动态链接库,将其在系统中注册。在以后的工程中,要引用此类的对象时,只需先建立对其的引用就可以。