
| 出版日期:2000-11-29 总期号:396 本年期号:46 |
|
货币的大写转换
叶德新 在财务应用软件的票据显示和打印时,经常要将输入的数字金额转换成汉字大写金额,为缩短软件的开发周期,我们可以先将该转换功能用类实现,然后在以后的软件中直接调用该类,下面我们来看看用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 将会编译并创建动态链接库,将其在系统中注册。在以后的工程中,要引用此类的对象时,只需先建立对其的引用就可以。 |
|||||||||||||||||||||||