我在Windows 7上使用Delphi 7和QuickReports。通常,QuickReports需要由查询生成的数据集,但是我想从StringGrid的内容进行报告,就像StringGrid代表查询结果一样。
怎么样?
最佳答案
使用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;