FASTREPORT动态列打印

willdavis 2019-02-19 03:56:09
我有一个动态报表,要求打印出来
例如:
A
客户 1月 2月 3月
客户1 1000 2000 3000

B
客户 3月 4月 5月 6月 7月
客户2 3000 8000 6000 4500 6800

也就是列标题是动态的,列数也是动态的。动态列数最多不超过12列。如何实现?
...全文
496 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jjpweb 2019-02-21
  • 打赏
  • 举报
回复
unit Unit1;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, Data.Win.ADODB,
Vcl.StdCtrls, Vcl.Grids, Vcl.DBGrids, frxClass, frxDBSet;

type
TForm1 = class(TForm)
ADOQuery1: TADOQuery;
DBGrid1: TDBGrid;
DataSource1: TDataSource;
Button1: TButton;
Edit1: TEdit;
frxReport1: TfrxReport;
frxDBDataset1: TfrxDBDataset;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
ADOQuery1.Close;
ADOQuery1.SQL.Text := Edit1.Text;
ADOQuery1.Open;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
frxmd: TfrxMasterData;
frxpage:TfrxReportPage;
i: Integer;
begin
if ADOQuery1.IsSequenced = False then
Exit;
if ADOQuery1.IsEmpty then
Exit;

frxDBDataset1.DataSet := ADOQuery1;
frxDBDataset1.UserName := 'myDb';
frxReport1.Clear;
frxReport1.DataSets.Clear;
frxReport1.DataSets.Add(frxDBDataset1);
Frxpage:=TfrxReportPage.Create(frxReport1);
frxpage.Name:='page1';
Frxpage.PaperWidth:=200;
frxpage.PaperHeight:=300;
frxmd:=TfrxMasterData.Create(Frxpage);
frxmd.Name:='mt1';
frxmd.Height:=30;
frxmd.DataSet := frxDBDataset1;
for i := 0 to ADOQuery1.Fields.Count - 1 do
begin
with TfrxMemoView.Create(frxmd) do
begin
Align:= baLeft;
Width:=80;
Height:=30;
Name := 'Memo' + IntToStr(i);
Memo.Text:=Format('[myDb."%s"]',[ADOQuery1.Fields[i].FieldName]);
Frame.Typ:=[ftTop,ftLeft,ftRight,ftBottom];
end;
end;
frxReport1.ShowReport();
end;

end.
lyhoo163 2019-02-19
  • 打赏
  • 举报
回复
1、可以通过DBGrideh打印,标题动态变换,打印也动态了。
2、建立使用国产锐浪打印控件,完成能打印出你所要求的表。

本人通过锐浪打印,不仅能打印动态标题,列数也能动态增加。
doloopcn 2019-02-19
  • 打赏
  • 举报
回复
这个应该是类似于DBGrid打印,论坛上应该有很多DBGrid的打印案例,你略作修改应该就能用FP打印了

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧