使用Delphi中的fastreport打印listview项目

时间:2015-08-30 09:52:43

标签: delphi fastreport delphi-xe8

我正在寻找一个简单的示例或使用fastreport从列表视图中打印项目的参考。例如:我有一个列表视图,其中包含三列:id,name和marks。列表视图有n个项目,每个项目包含个别学生的ID,名称和标记。我需要以表格格式使用fastreport打印整个listview。我用谷歌搜索,但找不到我的范围的确切样本。同样,我在fastreport演示中找不到任何关于此的文档。我使用的是Delphi XE8,默认安装了fastreport版本。

1 个答案:

答案 0 :(得分:2)

出于演示目的。

在表格上放置以下组件:

  • TButton的;
  • TListView的;
  • frxReport;
  • frxUserDataSet;

双击frxReport。在Fastreport设计师做

插入ReportTitle,MasterData和PageFooter band。

Report => Data个菜单项。选中frxUserDataSet复选框,然后按OK按钮。

在MasterData band上双击MasterData band并使用frxUserDataSet并选择frxUserDataSet,然后按“OK”按钮。

在MasterData中插入Text object(备注)。 在备忘录中写[element]

设计师应如下所示:

enter image description here

现在我们可以编写一些代码:

procedure TForm8.FormCreate(Sender: TObject);
var
  I: Integer;
  Li : TlistItem;
begin
  // Just to fill some data in ListView 
  for I := 1 to 10 do
   begin
    Li := ListView1.Items.Add;
    LI.Caption := 'Col ' + IntToStr(i);
   end;

end;

在frxReport1 OnGetValue 事件中写例如:

procedure TForm8.frxReport1GetValue(const VarName: string; var Value: Variant);
begin
  if CompareText(VarName, 'element') = 0 then
    Value := ListView1.Items[frxUserDataSet1.RecNo].Caption;
end;

现在打印数据

procedure TForm8.Button1Click(Sender: TObject);
begin
  frxUserDataSet1.RangeEnd := reCount;
  frxUserDataSet1.RangeEndCount := ListView1.Items.Count;
  frxReport1.ShowReport();
end;

按下Button1后的结果:

enter image description here

注意:在这个答案中使用了FastReport PrintStringList演示的一部分。