谁有财务凭证控件的,可以显示元、角、分的?(50分)

  • 主题发起人 主题发起人 dana
  • 开始时间 开始时间
D

dana

Unregistered / Unconfirmed
GUEST, unregistred user!
谁有财务凭证控件的,可以显示元、角、分的?
 
大佬,你也太拽了吧?呵呵~~~~~什么都要现成的。如果要小写转大写程序,我倒可以给你抄一段代码:(忘记了出处,对不起作者了!望见恕。)
===============================================================================

财务软件中总少不了大写的金额表示方式,如下为一个简单的小写金额转换为大写的函数,其思路简单(可以说烂吧,居然利用了位置来转换),但是它却几乎可以无限制的转换,只要你能读得出来和写得进去:
function Tform1.SmallTOBig(small:real):string;
var SmallMonth,BigMonth:string;
wei1,qianwei1:string[2];
wei,qianwei,dianweizhi,qian:integer;
begin
{------- 修改参数令值更精确 -------}
{小数点后的位数,需要的话也可以改动该值}
qianwei:=-2;

{转换成货币形式,需要的话小数点后加多几个零}
Smallmonth:=formatfloat('0.00',small);
{---------------------------------}

dianweizhi :=pos('.',Smallmonth);{小数点的位置}

{循环小写货币的每一位,从小写的右边位置到左边}
for qian:=length(Smallmonth) downto 1 do
begin
{如果读到的不是小数点就继续}
if qian<>dianweizhi then
begin

{位置上的数转换成大写}
case strtoint(copy(Smallmonth,qian,1)) of
1:wei1:='壹'
2:wei1:='贰';
3:wei1:='叁'
4:wei1:='肆';
5:wei1:='伍'
6:wei1:='陆';
7:wei1:='柒'
8:wei1:='捌';
9:wei1:='玖'
0:wei1:='零';
end;

{判断大写位置,可以继续增大到real类型的最大值,可是谁有那么多钱}
case qianwei of
-3:qianwei1:='厘';
-2:qianwei1:='分';
-1:qianwei1:='角';
0 :qianwei1:='元';
1 :qianwei1:='拾';
2 :qianwei1:='佰';
3 :qianwei1:='千';
4 :qianwei1:='万';
5 :qianwei1:='拾';
6 :qianwei1:='佰';
7 :qianwei1:='千';
8 :qianwei1:='亿';
9 :qianwei1:='十';
10:qianwei1:='佰';
11:qianwei1:='千';
end;

inc(qianwei);
BigMonth :=wei1+qianwei1+BigMonth;{组合成大写金额}
end;
end;
SmallTOBig:=BigMonth;
end;

程序调用如下“edit1.text:=SmallTOBig(1234567890.1234);”他自动默认小数点后两位
 
我要的是像财务报表一样,有很多细线的那种格式的。
 
procedure GetHjjeStr(var str: string
hjje: Currency);
const
C_Digit = '零壹贰叁肆伍陆柒捌玖';
var
tempstr, one: string;
iCount, ix, iy, ip: integer;
begin
tempstr := format('%.0f', [hjje * 100]);

gcHjje[1] := C_Space;
for iCount := 4 to 20 do
begin
if (iCount mod 2) = 0 then
gcHjje[iCount] := ' ';
end;

if (StrToInt(tempstr) > 0) then begin //金额为零
gcHjje[1] := format('%.2f', [hjje]);
gcHjje[1] := format('%s%s',
[gcHjje[1],
copy(C_Space, 1, 10 - Length(gcHjje[1])), gcHjje[1]]);
tempstr := format('%9.0f', [hjje * 100]);
ix := 10;
for iCount := 4 to 20 do
begin
if ((iCount mod 2) = 0) then
begin
ix := ix - 1;
if (tempstr[ix] = ' ') then
begin
gcHjje[iCount] := '¥';
for iy := iCount + 1 to 20 do
if ((iy mod 2) = 0) then
gcHjje[iy] := ' ';
break;
end;
one := Copy(C_Digit,(Ord(tempstr[ix])-Ord('0'))*2+1,2);
gcHjje[iCount] := one;
end;
end;
end;
end;
//以上是小写的,有带¥的。
如果是想细线的哪种就只要修改一下就可达到了。
 
怎么改呀?详楚一点好吗?
 
QLDBGrid Suite

特性

中国财务凭证式的金额显示。各显示位之间的分隔线颜色可自行定义,并可在标题行上显示“...万千百十个角分”!!!
支持多种方式的合计行。支持合计、平均、计数、文本等方式的合计行。中国财务凭证式的金额显示在合计行上同样适用。合计行的颜色可自行定义!!!
可在 Grid 的各列上嵌入任意控件来代替默认编辑器,例如可在布尔型字段的列上嵌入 DBCheckBox,在一只读或计算字段的列上嵌入 DBEdit!!!
支持交替式的行颜色显示。奇数行和偶数行可定义不同的颜色
自适应宽度。Grid 中的各列的宽度随 Grid 宽度的改变可自行调整宽度,使其始终填充整个 Grid 客户区域
回车键转换为制表键。可将回车键当作制表键来处理,使用户敲回车键时自动转入下一列或行,输入数据更快速方便
结合 TQLQRDBGridBuilder 自动生成 QuickReport 报表,省去手工制作报表的麻烦!!!
结合 TQLDBLookupComboBox 实现输入内容按拼音码查找(如同速达 E2 中的品名输入方式),而不必在大量的产品目录中来回查找或强迫用户记忆大量的产品代码!!!
继承自标准的 TDBGrid,使用 TDBGrid 或其子类开发的现有程序可实现平滑升级
更多强大的特性....

下载地址:
http://developer.nicesoft.net

http://www.nicesoft.net/downloads/qll.rar
 
http://download.pchome.net/development/delphi/8856.html
货币输入控件 for Delphi
很棒的中国风格的货币编辑DELPHI控件
 
我用SNC的,
不过在我的改造下变我的啦,
还加了一点基于他的控件,
XIXI,这里不要有SNC的人吧,
我可惨了~~~~~~~~~呵呵~~~~~~~~~~~~
如果要说高档一点的就是 Nicesoft.Net 老兄的啦,
我没有用过,应该很好吧,下来试试!!!!!!!!!!!!!!!
 
今天更新过,解决了在 Delphi 7 下不能安装的问题。请到 http://developer.nicesoft.net 下载最新版。
 
用dbgrideh3.1就可以
 
自己寫一個。大富翁上已經回答了很多這樣的問題!你查找一下
 
多人接受答案了。
 
后退
顶部