设为首页 加入收藏

TOP

【转】FastReport经验(六)
2017-10-10 12:06:03 】 浏览:10428
Tags:FastReport 经验
样做

吗?

A: FR 对象并不是一个组件 (这并不像 QR, RB). 但使用 TfrReport.FindObject 方法可以通过

对象名称找到该对象。

var
t: TfrMemoView;
begin
t := TfrMemoView(frReport1.FindObject(’Memo1’));
if t <> nil then
t.Memo.Text := ’FastReport’;
end;

Q: 我想在用户预览(TfrPreview组件)中自定义热键?

A: 这个组件有个窗口: Tform 属性. 将自定义句柄指定到 Window.OnKeyDown 属性.

Q: Fast Report 2.4 不能装载 FreeReport 2.21 文件?

A: 这仅需要使用16进制数改变报表文件的第一字节,然后在源代码中修改下面的部分。在这些修

改之后, 装载报表并保存它. 最后,返回到源代码处.

FR_Class:

function ReadString(Stream: Tstream): String;
begin
{ if frVersion >= 23 then}
Result := frReadString(Stream) {else
Result := frReadString22(Stream);}
end;

procedure ReadMemo(Stream: Tstream; Memo: Tstrings);
begin
{ if frVersion >= 23 then}
frReadMemo(Stream, Memo){ else
frReadMemo22(Stream, Memo);}
end;

FR_Utils:

procedure frReadMemo(Stream: Tstream; l: Tstrings);
var
s: String;
b: Byte;
n: Word;
begin
l.Clear;
l.Text := frReadString(Stream); exit;
Stream.Read(n, 2);
if n > 0 then
repeat
Stream.Read(n, 2);
SetLength(s, n);
Stream.Read(s[1], n);
l.Add(s);
Stream.Read(b, 1);
until b = 0
else
Stream.Read(b, 1);
end;

function frReadString(Stream: Tstream): String;
var
s: String;
n: Integer;
b: Byte;
begin
Stream.Read(n, 4);
SetLength(s, n);
Stream.Read(s[1], n);
if (n > 0) and (s[n] = #$0A) then
SetLength(s, n - 2);
// Stream.Read(b, 1);
Result := s;
end;

Q: 怎样不在打印预览中打印报表?
A: 这里有一段代码:

frReport1.PrepareReport;
frReport1.PrintPreparedReport(”, 1, True, frAll);

frReport1.PrintPreparedReportDlg;

Q: 我想在报表中旋转图片。问题是这张图片是由我的应用程序生成的。是否有方法可以在打印前

将这幅图片装载到报表中?

A: 使用 TfrReport.OnBeforePrint 事件:

if View.Name = ‘Picture1′ then
TfrPictureView(View).Picture.LoadFromFile(…) 或
.Assign 或
.你所想要做的任何事情

FastReport 套打全攻略
//以设计套打行为6行为例进行说明
一、定义变量
TaoDa   0 是套打 1 不套打
cPage   系统变量  页#
caPage  系统变量  总页数

二、TfrPage.OnBeforePrint事件中写
{
if TaoDa = ‘0′ then
begin
title.visible:=false;   //不用打印的设置Visible为False;
danweiv.frametyp := 0;  //只打印数据的不需要打印边框的设置 frametyp 为 0;

end;
i := 0 ;   //定义一个变量并进行初始化。
}
二、主项数据.OnBeforePrint事件中写
{
if TaoDa = ‘0′ then
begin
i := i + 1;
bm.memo := i;
if (i > 5 ) then
if ((i-1) mod 6 ) = 0 then newpage;
end;
}

三、主项脚.OnBeforePrint事件中写
{
j := i mod 6;
if j <> 0 then
begin
for k := j to 5 do
begin
ShowBand(Child1);   //Child1是子的名称 显示空白行
end;
end;
}
四、栏目脚.OnBeforePrint事件中写
{
if cpage <> capage then
begin
shi.memo := ”;  //十
bai.memo := ”;  //百
qian.memo := ”; //千
wan.memeo := ”; //万
end
else begin
shi.memo := v1;
bai.memo := v2;
qian.memo := v3;
wan.memo := v4;
end;
}

这段代码是用来控制在有多页情况下,在最后一页上显示总金额。
其中:v1,v2,v3,v4 是自定义变量。

报表结构组成:
栏目头           //画报表的标头
主项数据         //显示的数据,会与数据源进行绑定
主项脚      //什么也不用放,只用来控制  visible := false;
子               //画出空白行显示的组件
栏目脚           //显示总的金额、数量
页脚             //显示页数

调用方法:
frReportA.LoadFromFile(s);   s 是文件
frReportA.Dictionary.Variables['taoda']:=’1′;
进行查询

打印:
frReportA.PrepareReport;
frreportA.PrintPreparedReport(”,1,true,frall);

预览:
frReportA.ShowReport;

FastReport打印CxGrid数据

用惯了FastReport,就不愿意再使用其他的Print Component。用Fa

首页 上一页 3 4 5 6 下一页 尾页 6/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇HO引擎近况20160710 下一篇[教学] 将 Form 内的控件变成 Sty..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目