- 一自萧关起战尘
-
方法有很多,具体方法如下:
1、首先准备多张报表格式,让用户根据自己的需要选择,将来打印时调用这张报表就可以了,这种方法很简单,容易实现,并且一单有新的用户要求,只要加一张报表格式就解决了。(推荐使用)
2、为用户提供报表设计器。fastreport自带的报表设计器(我们设计报表时用的就是),可以为用户设计功能很强的报表,并在发布时带上。
3、中和一下上述的两种方法,用户可以选择,也可以自定义报表。
以下FastReport动态生成报表例子:
procedure TForm1.Button1Click(Sender: TObject);
var
v: TfrView;
b: TfrBandView;
Page: TfrPage;
begin
frReport1.Pages.Clear;
frReport1.Pages.Add; // create page
Page := frReport1.Pages[0];
b := TfrBandView.Create; // create Title band
b.SetBounds(0, 20, 0, 20); // position and size in pixels
b.BandType := btReportTitle; // (only Top and Height are significant
Page.Objects.Add(b); // for the band)
v := TfrMemoView.Create; // create memo
v.SetBounds(20, 20, 200, 16);
v.BandAlign := baWidth;
v.Prop["Alignment"] := frtaCenter; // another way to access properties
v.Prop["Font.Style"] := 2;
v.Memo.Add("Your text is: [Edit1.Text]");
Page.Objects.Add(v);
b := TfrBandView.Create; // create MasterData band
b.SetBounds(0, 60, 0, 20);
b.BandType := btMasterData;
b.Dataset := "frDBDataSet1"; // band"s dataset
Page.Objects.Add(b);
v := TfrMemoView.Create; // create data field
v.SetBounds(20, 60, 200, 16);
v.Memo.Add("[Table1."Company"]");
Page.Objects.Add(v);
frReport1.Pages.Add; // create second page
Page := frReport1.Pages[1];
Page.PageType := ptDialog;
Page.Width := 200;
Page.Height := 170;
Page.Caption := "Test";
v := TfrEditControl.Create; // create editbox
v.SetBounds(60, 50, 75, 21);
v.Name := "Edit1";
Page.Objects.Add(v);
v := TfrButtonControl.Create; // create button
v.SetBounds(60, 100, 75, 25);
TfrButtonControl(v).Button.Caption := "Test!";
TfrButtonControl(v).Button.ModalResult := mrOk;
Page.Objects.Add(v);
frReport1.ShowReport;
end;
- 陶小凡
-
方法是多种多样的,只能给你个提示,不知你的报表功底如何,参考一下把:
1。准备多张报表格式,让用户根据自己的需要选择,将来打印时调用这张报表就可以了,这种方法很简单,容易实现,并且一单有新的用户要求,只要加一张报表格式就解决了。(推荐使用)
2。为用户提供报表设计器。fastreport自带的报表设计器(我们设计报表时用的就是),可以为用户设计功能很强的报表,发布时带上不就万事大吉了?
3。中和一下上述的两种方法,用户可以选择,也可以自定义报表,很好嘛,对于常用的报表,可以收集一下逐步加强你的固定报表集(1中所讲的报表格式组合)。
各有优缺点:功能太强用户使用比较烦琐,不容易被用户接受,反之可能达不到用户的需求,权衡之。
- tt白
-
方法是多种多样的:
1。准备多张报表格式,让用户根据自己的需要选择,将来打印时调用这张报表就可以了,这种方法很简单,容易实现,并且一单有新的用户要求,只要加一张报表格式就解决了。(推荐使用)
2。为用户提供报表设计器。fastreport自带的报表设计器(我们设计报表时用的就是),可以为用户设计功能很强的报表,发布时带上不就万事大吉了?
3。中和一下上述的两种方法,用户可以选择,也可以自定义报表,很好嘛,对于常用的报表,可以收集一下逐步加强你的固定报表集(1中所讲的报表格式组合)。
各有优缺点:功能太强用户使用比较烦琐,不容易被用户接受,反之可能达不到用户的需求,权衡之。
FastReport动态生报表例子:
procedure TForm1.Button1Click(Sender: TObject);
var
v: TfrView;
b: TfrBandView;
Page: TfrPage;
begin
frReport1.Pages.Clear;
frReport1.Pages.Add; // create page
Page := frReport1.Pages[0];
b := TfrBandView.Create; // create Title band
b.SetBounds(0, 20, 0, 20); // position and size in pixels
b.BandType := btReportTitle; // (only Top and Height are significant
Page.Objects.Add(b); // for the band)
v := TfrMemoView.Create; // create memo
v.SetBounds(20, 20, 200, 16);
v.BandAlign := baWidth;
v.Prop["Alignment"] := frtaCenter; // another way to access properties
v.Prop["Font.Style"] := 2;
v.Memo.Add("Your text is: [Edit1.Text]");
Page.Objects.Add(v);
b := TfrBandView.Create; // create MasterData band
b.SetBounds(0, 60, 0, 20);
b.BandType := btMasterData;
b.Dataset := "frDBDataSet1"; // band"s dataset
Page.Objects.Add(b);
v := TfrMemoView.Create; // create data field
v.SetBounds(20, 60, 200, 16);
v.Memo.Add("[Table1."Company"]");
Page.Objects.Add(v);
frReport1.Pages.Add; // create second page
Page := frReport1.Pages[1];
Page.PageType := ptDialog;
Page.Width := 200;
Page.Height := 170;
Page.Caption := "Test";
v := TfrEditControl.Create; // create editbox
v.SetBounds(60, 50, 75, 21);
v.Name := "Edit1";
Page.Objects.Add(v);
v := TfrButtonControl.Create; // create button
v.SetBounds(60, 100, 75, 25);
TfrButtonControl(v).Button.Caption := "Test!";
TfrButtonControl(v).Button.ModalResult := mrOk;
Page.Objects.Add(v);
frReport1.ShowReport;
end;