FastReport - 如何以表格形式展示数据?

发布于 2024-12-01 16:53:08 字数 182 浏览 1 评论 0原文

如何在 FastReport 中以表格的形式显示数据?

编辑

我的意思是,我想创建一个像这样的报告:(采用表格格式)。

在此处输入图像描述

How can i display data in the form of table in the FastReport ?

Edit

I mean ,I want to create a report like this : (with tabular format).

enter image description here

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

清欢 2024-12-08 16:53:08

使用 FR 向导的最简单方法

从 FR 文件菜单 > 新的>标准报告向导,

当您到达“布局”页面时,从布局中选择表格,然后确定

The easiest way to use FR wizard

from FR File menu > new > Standard report wizard

when you reach the "Layout" page, choose tabular from layout then OK

黄昏下泛黄的笔记 2024-12-08 16:53:08

我认为你需要自己构建网格。下面是一些构建网格布局的代码,可以帮助您入门。您将需要调整列宽并添加格式代码(memo.frame)以获得所需的外观。

procedure CreateHeader(frxDataset: TfrxDBDataSet; Page: TfrxReportPage);
var
  i: Integer;
  X, Y, ThisWidth: Extended;
  HeaderMemo: TfrxCustomMemoView;
  Column: TcxGridDBColumn;
begin
  Band := TfrxPageHeader.Create(Page);
  Band.CreateUniqueName;
  Band.SetBounds(0, 0, 0, fr01cm * 7);
  Band.Height := edtHeightHeader.Value;

  HeaderMemo := CreateMemo(Band);
  HeaderMemo.SetBounds(0, 0, PageWidth, 0);

  // Set memo style
  // Or just add a frame HeaderMemo.Frame....
  HeaderMemo.Style := 'Header line';

  X := 0;
  Y := 0;

  Memo := CreateMemo(Band);
  Memo.SetBounds(0, Y, X, fr01cm * 6);
  Memo.Height := Band.Height - 1;

  for i := 0 to pred(frxDataset.Fields.Count) do
  begin
    ThisWidth := 100;

    Memo := CreateMemo(Band);
    Memo.SetBounds(X, Y, ThisWidth, fr01cm * 6);

    Memo.Text := frxDataset.Fields[i].FieldName;

    // Set memo style
    // Or just add a frame HeaderMemo.Frame....
    Memo.Style := 'Header';

    Memo.Height := Band.Height - 1;

    X := X + ThisWidth;
  end;

  HeaderMemo.Height := Band.Height;
end;

procedure CreateFastReportDataBand(frxDataset: TfrxDBDataSet; Page: TfrxReportPage);
var
  i: Integer;
  X, Y, ThisWidth: Extended;
begin
  Band := TfrxMasterData.Create(Page);
  Band.CreateUniqueName;
  Band.SetBounds(0, CurY, 0, 0);
  Band.Height := edtHeightData.Value;

  TfrxMasterData(Band).frxDataset := frxDataset;

  X := 0;
  Y := 0;

  for i := 0 to pred(frxDataset.Fields.Count) do
  begin
    ThisWidth := 100;

    Memo := CreateMemo(Band);
    Memo.SetBounds(X, Y, ThisWidth, fr01cm * 5);
    Memo.Dataset := frxDataset;
    Memo.DataField := frxDataset.Fields[i].FieldName;

    // Set memo style
    // Or just add a frame HeaderMemo.Frame....
    Memo.Style := 'Data';

    Memo.Height := Band.Height - 1;

    X := X + ThisWidth;
  end;
end;

它应该可以正常工作,但自从将它与我的应用程序解耦以来我还没有机会进行测试。

I think you need to build the grid yourself. Here's a bit of code that builds a grid layout to get you started. You will need to adjust the column widths and add the formatting code (memo.frame) to get your desired look.

procedure CreateHeader(frxDataset: TfrxDBDataSet; Page: TfrxReportPage);
var
  i: Integer;
  X, Y, ThisWidth: Extended;
  HeaderMemo: TfrxCustomMemoView;
  Column: TcxGridDBColumn;
begin
  Band := TfrxPageHeader.Create(Page);
  Band.CreateUniqueName;
  Band.SetBounds(0, 0, 0, fr01cm * 7);
  Band.Height := edtHeightHeader.Value;

  HeaderMemo := CreateMemo(Band);
  HeaderMemo.SetBounds(0, 0, PageWidth, 0);

  // Set memo style
  // Or just add a frame HeaderMemo.Frame....
  HeaderMemo.Style := 'Header line';

  X := 0;
  Y := 0;

  Memo := CreateMemo(Band);
  Memo.SetBounds(0, Y, X, fr01cm * 6);
  Memo.Height := Band.Height - 1;

  for i := 0 to pred(frxDataset.Fields.Count) do
  begin
    ThisWidth := 100;

    Memo := CreateMemo(Band);
    Memo.SetBounds(X, Y, ThisWidth, fr01cm * 6);

    Memo.Text := frxDataset.Fields[i].FieldName;

    // Set memo style
    // Or just add a frame HeaderMemo.Frame....
    Memo.Style := 'Header';

    Memo.Height := Band.Height - 1;

    X := X + ThisWidth;
  end;

  HeaderMemo.Height := Band.Height;
end;

procedure CreateFastReportDataBand(frxDataset: TfrxDBDataSet; Page: TfrxReportPage);
var
  i: Integer;
  X, Y, ThisWidth: Extended;
begin
  Band := TfrxMasterData.Create(Page);
  Band.CreateUniqueName;
  Band.SetBounds(0, CurY, 0, 0);
  Band.Height := edtHeightData.Value;

  TfrxMasterData(Band).frxDataset := frxDataset;

  X := 0;
  Y := 0;

  for i := 0 to pred(frxDataset.Fields.Count) do
  begin
    ThisWidth := 100;

    Memo := CreateMemo(Band);
    Memo.SetBounds(X, Y, ThisWidth, fr01cm * 5);
    Memo.Dataset := frxDataset;
    Memo.DataField := frxDataset.Fields[i].FieldName;

    // Set memo style
    // Or just add a frame HeaderMemo.Frame....
    Memo.Style := 'Data';

    Memo.Height := Band.Height - 1;

    X := X + ThisWidth;
  end;
end;

It should work ok, but I've not had a chance to test since decoupling it from my application.

似最初 2024-12-08 16:53:08

可以使用备忘录的 Framing 属性。

It will be possible using Framing Property of Memos.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文