请教如何将已转化为大写金额的edit.text在rave报表中打印出来? ( 积分: 200 )

  • 主题发起人 主题发起人 xhliang
  • 开始时间 开始时间
X

xhliang

Unregistered / Unconfirmed
GUEST, unregistred user!
有一报表,金额小计已转化为大写金额在edit8中,
Edit8.Text:= RMB(StrToFloat(Edit9.Text));
请教如何将edit8.text中的大写金额在rave报表中打印出来呢? 多谢
 
你可以参考
动态设置报表中的特定对象的内容
动态设置报表中的特定对象的内容有两种方法。
法一 查找对象法
通过FindRaveComponent函数逐级获得子对象来确定目标对象后,直接设定该对象各种属性。
法二 参数法
在RAVE报表设计器中,为特定的页增加参数Param1;在程序代码中setparam函数动态改变参数的内容。RAVE报表中与该参数挂接的对象DataText也会相应地动态改变。(参数与对象挂接的方法是:在RAVE报表设计器中选定特定的对象,比如一个DataText对象,利用属性编辑器设定对象的DataField属性为前面加入的参数,比如Param.Param1,即可)
方法一可以更改对象的多种属性,而方法二仅能改变内容。
-------------------------
源代码如下:

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, RpDefine, RpRave, StdCtrls, RVClass,RVCsStd;
type
TForm1 = class(TForm)
Button1: TButton;
RvProject1: TRvProject;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
MyPage: TRavePage;
MyText: TRaveText;

begin
RvProject1.Open;
//方法一 采用查找对象法
With RvProject1.ProjMando
begin
MyPage := FindRaveComponent('Report1.Page1',nil) as TRavePage;
//查找PAGE
MyText := FindRaveComponent('Text1',MyPage) as TRaveText;
//查找TEXT
MyText.Text := 'SCYANGYU@163.COM 上海';
//设置报表中文本内容
MyText.Color := clRed;
//设置颜色
end;
{ with }
//方法二 采用参数法
RvProject1.SetParam('Param1','SCYANGYU@163.COM 上海');
RvProject1.ExecuteReport('Report1');
RvProject1.Close;
end;

end.
 
没明白什么意思~
 
不是很难理解吧,就是说,要用rave打印一个报表,报表中有个金额合计,已转化为大写金额、(Edit8.Text:= RMB(StrToFloat(Edit9.Text));)并在edit8中显示,就是不知如何将这个大写金额在报表中打印出来,多谢指教!
 
采用壁画兄所说方法2,参数法后,能将'SCYANGYU@163.COM 上海'在报表中打印出来了,可我要打印的是在edit8.text中 动态改变的大写金额,请各位再指教!多谢!
 
就是傳值到報表中吧!二樓的做法已滿足
 
这样不可以传递吗?
RvProject1.SetParam('Param1', edit8.text);
 
多谢壁画兄指教,谢谢了!
附大小写金额转换及rave报表打印金额大写代码如下
function RMB(NN:real):string;
var
HZ,NS,NW,NA,N1,N2:string;
LA,X,Nk:integer;
begin
if NN>9999999999999.99 then
begin
MessageDlg('金额溢出。',mtError,[mbOk], 0);
HZ:='';
Result:=HZ;
exit;
end;
if NN=0 then
begin
HZ:='零元';
result:=HZ;
exit;
end;
NS:='零壹贰叁肆伍陆柒捌玖';
NW:='分角元拾佰仟万拾佰仟亿拾佰仟万';
NA:=FloatToStr(NN*100);
LA:=length(NA);
X:=1;
HZ:='';
while X<=LAdo
begin
NK:=Ord(NA[x])-Ord('0');
N1:=Copy(NS,NK*2+1,2);
N2:=Copy(NW,LA*2+1-X*2,2);
if (NK=0) AND ((N2='亿') OR( N2='万') OR( N2='元'))then
begin
if copy(HZ,Length(HZ)-1,2)='零' then
HZ:=copy(HZ,1,length(HZ)-2);
if copy(HZ,Length(HZ)-1,2)='亿' then
if N2='元' then
begin
N1:=N2;
N2:='零';
end
else
N2:=''
else
begin
N1:=N2;
N2:='零';
end
end
else
if NK=0 then
begin
if copy(HZ,length(HZ)-1,2)='零' then
N1:='';
if N2='分' then
begin
if copy(HZ,length(HZ)-1,2)='零' then
HZ:=copy(HZ,1,length(HZ)-2)+'整'
else
HZ:=HZ+'整';
N1:='';
end;
N2:='';
end;
HZ:=HZ+N1+N2;
X:=X+1
end;
Result:=HZ;
end;
procedure TForm20.Button5Click(Sender: TObject);
begin
with ADOQuery6do
begin
close;
SQL.Clear;
SQL.Add('select sum(o_jine)''jine'' from out where o_no='''+edit2.text+'''');
open;
edit9.Text :=Fieldbyname('jine').asstring;
Edit8.Text:= RMB(StrToFloat(Edit9.Text));
end;
end;

procedure TForm20.Button5Click(Sender: TObject);
begin
with ADOQuery6do
begin
close;
SQL.Clear;
SQL.Add('select sum(o_jine)''jine'' from out where o_no='''+edit2.text+'''');
open;
edit9.Text :=Fieldbyname('jine').asstring;
Edit8.Text:= RMB(StrToFloat(Edit9.Text));
end;
end;
procedure TForm20.Button3Click(Sender: TObject);
begin
RvProject1.Open;
RvProject1.SetParam('p6', edit7.text);
RvProject1.SetParam('p5', edit2.text);
RvProject1.SetParam('p4', edit5.text);
RvProject1.SetParam('p3', edit6.text);
RvProject1.SetParam('p2', edit4.text);
RvProject1.SetParam('p1', edit8.text);
RvProject1.ExecuteReport('Report3');
RvProject1.Close;
begin
RvProject1.Execute;
end;
end;
end.
 
接受答案了.
 
后退
顶部