Delphi 如何从TStringGrid的内容创建QuickReport
我在Windows7上使用Delphi7和QuickReports。通常QuickReports需要由查询生成的数据集,但我希望从StringGrid的内容生成一个报告,就好像StringGrid是查询结果的表示一样Delphi 如何从TStringGrid的内容创建QuickReport,delphi,quickreports,Delphi,Quickreports,我在Windows7上使用Delphi7和QuickReports。通常QuickReports需要由查询生成的数据集,但我希望从StringGrid的内容生成一个报告,就好像StringGrid是查询结果的表示一样 如何操作?我假设列集在StringGrid中是固定的(并使用相应的TClientDataSet)。逐步说明: 将TClientDataSet拖放到窗体上 双击TClientDataSet,点击键盘上的INSERT键添加一个新字段,为每个网格列添加一个字段。示例:COL1,字符串,1
如何操作?我假设列集在StringGrid中是固定的(并使用相应的TClientDataSet)。逐步说明:
您需要在循环中执行Append/Post,在网格中的每一行上循环。您可以在另一个循环中分配COL1、COL2等,也可以手工编码。我假设列集在StringGrid中是固定的(并使用相应的TClientDataSet)。逐步说明:
您需要在循环中执行Append/Post,在网格中的每一行上循环。您可以在其他循环中分配COL1、COL2等,也可以手工编码。使用QuickReport.OnNeedData事件处理程序。它传递一个名为MoreData(布尔值)的var参数;将其设置为True意味着它将再次被调用。将QuickReport.DataSource属性保留为空,并使用普通TQRText控件而不是TQRDBText
// CurrLine is an Integer. In your case, it can represent a row in the StringGrid.
procedure TPrintLogForm.QuickRep1NeedData(Sender: TObject;
var MoreData: Boolean);
begin
MoreData := (CurrLine < StringGrid1.RowCount);
if MoreData then
begin
qrTextLine.Caption := StringGrid1.Cells[0, CurrLine];
qrTextData.Caption := StringGrid1.Cells[1, CurrLine];
Inc(CurrLine);
end;
end;
//CurrLine是一个整数。在您的情况下,它可以表示StringGrid中的一行。
过程TPrintLogForm.QuickRep1NeedData(发送方:TObject;
变量(数据:布尔);
开始
MoreData:=(CurrLine
使用QuickReport.OnNeedData事件处理程序。它传递一个名为MoreData(布尔值)的var参数;将其设置为True意味着它将再次被调用。将QuickReport.DataSource属性保留为空,并使用普通TQRText控件而不是TQRDBText
// CurrLine is an Integer. In your case, it can represent a row in the StringGrid.
procedure TPrintLogForm.QuickRep1NeedData(Sender: TObject;
var MoreData: Boolean);
begin
MoreData := (CurrLine < StringGrid1.RowCount);
if MoreData then
begin
qrTextLine.Caption := StringGrid1.Cells[0, CurrLine];
qrTextData.Caption := StringGrid1.Cells[1, CurrLine];
Inc(CurrLine);
end;
end;
//CurrLine是一个整数。在您的情况下,它可以表示StringGrid中的一行。
过程TPrintLogForm.QuickRep1NeedData(发送方:TObject;
变量(数据:布尔);
开始
MoreData:=(CurrLine
您可以简单地将clientdataset连接到dbgrid,还是我遗漏了什么?对不起,Marco,我没有使用TDBGrid,我已经将数据导入了TStringGrid。我想从该StringGrid生成报告,而无需重新查询数据库。您只需将clientdataset连接到一个dbgrid,或者我遗漏了什么?对不起,Marco,我没有使用TDBGrid,我已经将数据导入了TStringGrid。我想从StringGrid生成我的报告,无需重新查询数据库。谢谢。不错,可能可以工作(还没有尝试过),但我想在运行时做所有事情(没有设计时更改)+谢谢你及时的回复。不错,可能可以工作(还没有尝试过),但我想在运行时做所有事情(没有设计时更改)+谢谢你及时的回答。谢谢肯,我会试试的。很高兴知道我不一定需要CD。感谢你的专业知识+1你也是。我喜欢这个答案,因为它不仅回答了“StringGrid的CD,如何制作?”这个确切的问题,而且提供了一种更简单的方法来实现所需的结果(StringGrid的QuickReport)。谢谢Ken,我会尝试的。很高兴知道我不一定需要CD。感谢你的专业知识+1你也是。我喜欢这个答案,因为它不仅回答了确切的问题“StringGrid的CD,如何制作?”而且提供了一种更简单的方法来实现所需的结果(StringGrid的QuickReport)。