【问题标题】:Printing listview items using fastreport in Delphi在 Delphi 中使用 fastreport 打印列表视图项
【发布时间】:2015-08-31 00:08:53
【问题描述】:

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

【问题讨论】:

  • 你应该使用frxUserDataSet。不知道DelphiXE8安装是否有fastreport..\demo文件夹。如果有请看 PrintStringList 演示。
  • 它不存在。我确实在 SO 中搜索过这样的问题。顺便说一句,我是使用报告工具的新手。
  • @ValMarinov 我在这里发现了一个类似的问题:stackoverflow.com/questions/23535533/… 但我似乎并不清楚答案。
  • Ок.我会尝试写一个简短的“演示”

标签: delphi fastreport delphi-xe8


【解决方案1】:

用于演示目的。

在表单上放置以下组件:

  • T按钮;
  • TListView;
  • frx 报告;
  • frxUserDataSet;

双击 frxReport。在 Fastreport 设计器中做

插入 ReportTitle、MasterData 和 PageFooter 带区。

Report => Data 菜单项。选中frxUserDataSet复选框并按下OK按钮。

frxUserDataSet 分配MasterData 带,双击MasterData 带并选择frxUserDataSet,然后按“确定”按钮。

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

设计师应该是这样的:

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

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被按下后的结果:

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

【讨论】:

  • 非常感谢您的努力。是的,它按要求工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-04
  • 1970-01-01
相关资源
最近更新 更多