在 Delphi 中使用 fastreport 打印列表视图项目
Printing listview items using fastreport in Delphi
我正在寻找使用 fastreport 从列表视图打印项目的简单示例或参考。例如:我有一个包含三列的列表视图:id、name 和 marks。列表视图有 n 个项目,每个项目包含个别学生的 ID、姓名和分数。我需要使用表格格式的 fastreport 打印整个列表视图。我用谷歌搜索但找不到适合我的范围的确切样本。同样,我在 fastreport 演示中找不到任何关于此的文档。我正在使用默认安装的 fastreport 版本的 Delphi XE8。
用于演示目的。
在表单中放置以下组件:
- TButton;
- TListView;
- frx报告;
- frxUserDataSet;
双击 frxReport。在 Fastreport 设计器中做
插入 ReportTitle、MasterData 和 PageFooter 带区。
按 Report => Data
菜单项。选中 frxUserDataSet
复选框并按 OK
按钮。
用 frxUserDataSet
分配 MasterData band,双击 MasterData band 和 select frxUserDataSet,然后按 'OK' 按钮。
在 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 演示的一部分。
我正在寻找使用 fastreport 从列表视图打印项目的简单示例或参考。例如:我有一个包含三列的列表视图:id、name 和 marks。列表视图有 n 个项目,每个项目包含个别学生的 ID、姓名和分数。我需要使用表格格式的 fastreport 打印整个列表视图。我用谷歌搜索但找不到适合我的范围的确切样本。同样,我在 fastreport 演示中找不到任何关于此的文档。我正在使用默认安装的 fastreport 版本的 Delphi XE8。
用于演示目的。
在表单中放置以下组件:
- TButton;
- TListView;
- frx报告;
- frxUserDataSet;
双击 frxReport。在 Fastreport 设计器中做
插入 ReportTitle、MasterData 和 PageFooter 带区。
按 Report => Data
菜单项。选中 frxUserDataSet
复选框并按 OK
按钮。
用 frxUserDataSet
分配 MasterData band,双击 MasterData band 和 select frxUserDataSet,然后按 'OK' 按钮。
在 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 演示的一部分。