关闭

欢迎使用CSDN-markdown编辑器

594人阅读 评论(0) 收藏 举报
分类:

这里写图片描述
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, FR_Class, FR_DSet, FR_DBSet, FR_Desgn, DB, ADODB,
Grids, DBGrids;

type
TForm1 = class(TForm)
frprt1: TfrReport;
Button1: TButton;
Button2: TButton;
Label1: TLabel;
Button3: TButton;
frDesigner1: TfrDesigner;
frDBDataSet1: TfrDBDataSet;
DBGrid1: TDBGrid;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
Button4: TButton;
ds1: TDataSource;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
frprt1.LoadFromFile(ExtractFilePath(Application.ExeName)+’Untitled.frf’);
frprt1.DesignReport;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Label1.Caption:=ExtractFilePath(Application.ExeName);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
frprt1.LoadFromFile(ExtractFilePath(Application.ExeName)+’Untitled.frf’);
frprt1.ShowReport;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
ADOQuery1.Close;
ADOQuery1.SQL.Text:=’select * from 通讯录 where 姓名 like :name1’;
ADOQuery1.Parameters.ParamByName(‘name1’).Value:=’%’ + Edit1.Text + ‘%’;
ADOQuery1.Open;
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then
Button4.Click;
end;

end.

http://blog.csdn.net/trassion/article/details/8105661

加入控件TFrxreport、frxDesigner1,导出部分添加TfrxSimpleTextExport、TfrxXLSExport、TfrxPDFExport、TfrxHtmlExport等表示要导出的几种类型。

如果没有TFrxDesigner控件将不能进行报表设计。另外添加TfrxDBDataset 数据源(在Form或Data Module中加入都行)可以在设计时查看到的DataSet.

在MasterData的属性DataSet中选择相应的数据集。

这样简单的报表就设计完成了,可以在设计模式下预览查看下结果。

在Form中通过语句可以调用打印预览和报表设计。

frxReport1.ShowReport; //报表预览

frxReport1.DesignReport; //报表设计

frxReport1.Clear; //先清除报表
frxReport1.LoadFromFile(‘D:\Borland\Projects\TestFastReport\test1.fr3’); //打开指定报表
frxReport1.ShowReport; //显示报表

关于FastReport 的其他一些问题总结如下:

1.FastReport中如何共用TFrxreport及TfrxDBDataSet

一个程序中,不管多么大的程序,只要打印或预览时是模式的,则完全可以共用一个TFrxreport

变量及几个TfrxDBDataSet。只不过,要注意完成一个报表程序的步骤,主要是下面几步
1)清除报表,得到一个全新的报表内容。
Frxreport1.clear。
2)设置要使用的TfrxDBDataSet的别名,如果不需要可以省略这一步,但一般最好不同的报表用不

同的别名。
注意这一步要在加载报表文件之前,因为一般设计报表文件时已经包含了别名信息。
frxDBDataSet1.UserName:=别名;
3)加载报表或动态建立一个TfrxReportPage。
Frxreport1.LoadFromFile(报表文件的完整文件名);
4)关联TfrxDBDataSet与TDataset,并设置要使用哪些TfrxDBDataSet。
Frxreport1.DataSets.Clear;//先清除原来的数据集
frxDBDataSet1.DataSet:=dataset1;//关联Fastreport的组件与TDataset数据集。
Frxreport1.DataSets.Add(frxDBDataSet1);//加载关联好的TfrxDBDataSet到报表中。
经过这几步后,就可以像单独使用一个Tfrxreport一样使用共用的报表组件了

写成函数是

procedure IniReport(var frReport:TfrxReport;var frDbBase:TfrxDBDataset;ReportName: string; qry: TADOQuery);
begin
frReport.clear;
frReport.LoadFromFile(ReportName);
frReport.DataSets.Clear;
frDbBase.DataSet := qry;
frReport.DataSets.Add(frDbBase);
end;

2.如何打印空白处?
在打印报表的Band处的OnBeforePrint事件中添加代码:
while FreeSpace > 20 do
ShowBand(Child1)

3.如何打印指定行数后换页?
在master band中OnBeforePrint事件中写代码:
var
vLineCount: integer;
begin
vLineCount := vLineCount + 1;
if vLineCount = 10 then
begin
vLineCount := 0;
NewPage;
end;
end;

4.fastreport中如何把数据显示为百分比
DisplayFormat属性,其中的Kind你设置成fkNumeric,FormatStr
[

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:676176次
    • 积分:8547
    • 等级:
    • 排名:第2252名
    • 原创:272篇
    • 转载:13篇
    • 译文:0篇
    • 评论:30条
    最新评论