样做
吗?
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,就不愿意再使用其他的Print Component。用Fa