Delphi开发中一些杂碎

在CSDN里很多人会问,但是不好找答案的问题之一--关于QuickReport(代码示例)

1、 分页

      with TQuickReport1.Create(nil) do

      begin
        NP := StrToInt(Edit1.Text);//每页显示的条数
        PrintCount := 0;//页码
        IP:= 0;//记录条
        prepare;
        QRLabel29.Caption:='页共'+inttostr(printer.PageCount)+'页';//显示当前页和总页码
        Preview ;
     end    

    在记录条所在的Band(一般为DetailBand)beforeprint中

      if IP < NP then
     begin
       PrintBand := True;
     end else
       begin
       NewPage;
       IP:= 0;
    end;

在AfterPrint中

IP := IP + 1;
  PrintCount := PrintCount+1;

其余的细节,自己调整即可。

2、每一页的合计

     很简单,定义一个QREXPR设定公式即可。比如:Sum(某字段)

3、获取QRExpr的值

     根据结果的不同可以使用不同的返回属性

       QRExpr1.Value.dblResult(intResult......)等等

    注意的是,最好在其所在Band中的BeforePrint中获取,否则可能取不到值

4、金额的大小写

    定一个转换函数,比如:

        function Changdx3( mmje: Double): String;
const
s1: String = '零壹贰叁肆伍陆柒捌玖';
s2: String = '分角元拾佰仟万拾佰仟亿拾佰仟万';
var
s, dx: String;
i, Len: Integer;
function StrTran(const S, S1, S2: String): String;
begin
Result := StringReplace(S, S1, S2, [rfReplaceAll]);
end;
begin
if mmje < 0 then
begin
dx := '负';
mmje := -mmje;
end;
s := Format('%.0f', [mmje*100]);
Len := Length(s);
for i := 1 to Len do
dx := dx + Copy(s1, (Ord(s[i]) - Ord('0'))*2 + 1, 2) + Copy(s2, (Len - i)*2 + 1, 2);
dx := StrTran(StrTran(StrTran(StrTran(StrTran(dx, '零仟', '零'), '零佰', '零'), '零拾', '零'), '零角', '零'), '零分', '整');
dx := StrTran(StrTran(StrTran(StrTran(StrTran(dx, '零零', '零'), '零零', '零'), '零亿', '亿'), '零万', '万'), '零元', '元');
if dx = '整' then
Result := '零元整'
else
Result := StrTran(StrTran(StrTran(dx, '亿万', '亿零'), '零整', '整'), '零零', '零');
end;

 

然后在QR中一般在PageFooter band中定义QRExpr

procedure TQuickReport1.QRBand3AfterPrint(Sender: TQRCustomBand;
  BandPrinted: Boolean);
begin
 self.QRLabel2.Caption:=Changdx3(self.QRExpr1.Value.dblResult);
end;

即可在Label2显示相关的大写金额。

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

acuier

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值