FastReport需要解决的问题(100分)

  • 主题发起人 主题发起人 zhengganghua
  • 开始时间 开始时间
Z

zhengganghua

Unregistered / Unconfirmed
GUEST, unregistred user!
问有谁能解决以下问题:
1、报表水印问题;
2、预览中显示,打印时不显示!谢谢!
100分
 
我也很想知道,请会的指教!
 
我想到了第二个问题的一个解:
预览时把控件的Visible属性设置为True,打印时设为False,这样就行了。
不过有点烦,希望有更好的答案。
 
function notprint(fr:tfrReport;name:string):boolean;
var
t:tfrview;
begin
t:=fR.FindObject(name);
if t<>nil then
begin
t.Visible:=false;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
// 预览
begin
frReport1.LoadFromFile('c:/1.frf');
notprint(frReport1,'memo1');
frReport1.ShowReport;
end;

procedure TForm1.Button2Click(Sender: TObject);
// 打印
begin
frReport1.LoadFromFile('c:/1.frf');
frReport1.ShowReport;
end;
 
感谢lhc4000,我想有没有在报表里面设置的办法!
 
据我所知,在Fr2.51之前,没有现成的方法可以实现楼主的要求。
 
做两个模版,一个用于显示,一个用于后台打印。
 
小神通的此方法可以一试
 
lhc4000,Fr2.51里面怎么实现?请指教!
 
Sorry, 我的表述有点问题,引起楼主的误会了。我说的“在Fr2.51之前”是包括2.51的。
 
1、报表水印问题:可以用背景图(把要做水印的图像做得淡些)间接实现。
 
lhc4000,的办法就可行!
 
第二个问题的另一个解:
把只需预览时显示不需要打印的对象的Tag属性定义为一个负数,如-1,然后用下面的代码替换原程序中的相应部分就可以了:
function notprint(frReport1:tfrReport):boolean;
//处理不需打印的对象
var
i,j:integer;
begin
for j:=0 to frreport1.Pages.Count-1do
for i:=0 to frReport1.Pages[j].Objects.count-1do
if strtointdef(TfrView(frReport1.Pages[j].Objects).tag,0)<0 then
TfrView(frReport1.Pages[j].Objects).Visible:=false;
end;

procedure TForm1.Button1Click(Sender: TObject);
//打印
begin
frReport1.LoadFromFile('c:/1.frf');
notprint(frReport1);
frReport1.PrepareReport;
frReport1.PrintPreparedReport('',1,True,frAll);
end;

procedure TForm1.Button2Click(Sender: TObject);
//预览
begin
frReport1.LoadFromFile('c:/1.frf');
frReport1.ShowReport;
end;
 
感谢lhc4000,分已加上。
有空常探讨。我的QQ:178808248
 
后退
顶部