IT0022.PowerBuilder 9.0 精彩编程百例

IT0022.PowerBuilder 9.0 精彩编程百例


黄浩 赵宏杰 等编著
北京:中国水利水电出版社
ISNB 7-5084-2047-0
2004年4月第1版
¥34.00



实例74 获得计算机系统基本信息

实例77 大小写金额转换

实例79.用户对象的事件和自定义函数


实例74 获得计算机系统基本信息
在当前window的Global External Functions中使用winapi来获取计算机名
  //获得计算机名称字符串,注:原来书中的GetComputerNameA的,这个取出来是乱码
 FUNCTION boolean GetComputerNameW(ref string cname,ref long nbuf) LIBRARY "kernel32.dll"

在window的open里就直接用就行了,使用winapi的时候都要指定他的内存缓冲区大小


string computername
long buf
buf=250
computername = space(buf)
GetComputerNameW(computername,buf)
sle_computername.text=computername



实例77 大小写金额转换


新建 PB Object 里面的Function全局函数 f_to_daxieje, 传入一个参数 string 的xxje ,主体代码如下:
string SL,JE,M,DXJE
integer N,I,J,W
SL="零壹贰叁肆伍陆柒捌玖"
JE="分角元拾佰仟万拾佰仟亿"
M=trim(xxje)
N=pos(M,".")
M=replace(M,N,1,"") //去掉小数点

N=len(M) //获得字符串长度
J=N;DXJE=""  //为大写金额设置初始值
messagebox("","J:"+string(J)+",xxje:"+xxje+",M:"+string(M)+",N:"+string(N))
for I=1 to N
    W=integer(mid(M,I,1))
    if W>0 then
        DXJE=DXJE+mid(SL,W+1,1) //数值
        DXJE= DXJE+mid(JE,J,1) //单位
    elseif W=0 then
        if mid(JE,J,1)="万" then
            DXJE=DXJE+mid(JE,J,1) //万位必保
        elseif mid(JE,J,1)="元" then
            if len(M)=3 then
                DXJE=DXJE+'零' //元前零
            end if
            DXJE=DXJE+"元" //元位必保
            if integer(mid(M,I+1,1))>0 and len(M) >3 then
                DXJE=DXJE+mid(SL,W+1,1) //元后零
            end if
        elseif integer(mid(M,I+1,1))>0 then   //有效零
            DXJE=DXJE+mid(SL,W+1,1)
        elseif integer(mid(M,I))=0 then   //后继全零
            if J >=7 then DXJE=DXJE+"万"
            if J >=3 then DXJE=DXJE+"元"
            DXJE = DXJE+"整"
            exit
         end if
    end if 
     J -= 1
next 
return DXJE
注:调用时传入的必须有小数,如100.00



实例79.用户对象的事件和自定义函数


创建时选择 PB Object / Standard Visual ,再选择继承自哪个控件...