FastReport - Как отобразить данные в виде таблицы? - PullRequest
0 голосов
/ 27 августа 2011

Как я могу отобразить данные в виде таблицы в FastReport?

Изменить

Я хочу создать отчет, подобный этому:(в табличном формате).

enter image description here

Ответы [ 3 ]

3 голосов
/ 28 августа 2011

Самый простой способ использования мастера FR

из меню FR File> new> Мастер стандартных отчетов

когда вы перейдете на страницу "Макет", выберите табличный из макета, затем ОК

2 голосов
/ 28 августа 2011

Я думаю, вам нужно построить сетку самостоятельно.Вот немного кода, который создает макет сетки для начала работы.Вам нужно будет отрегулировать ширину столбцов и добавить код форматирования (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;

Это должно работать нормально, но у меня не было возможности протестировать после развязкиэто из моего приложения.

1 голос
/ 28 августа 2011

Это будет возможно, используя Framing Свойство Memos.

...