Windows 7 で Delphi 7 と QuickReports を使用しています。通常、QuickReports にはクエリによって生成された DataSet が必要ですが、StringGrid がクエリの結果の表現であるかのように、StringGrid の内容からレポートを作成したいと考えています。
どのように?
Windows 7 で Delphi 7 と QuickReports を使用しています。通常、QuickReports にはクエリによって生成された DataSet が必要ですが、StringGrid がクエリの結果の表現であるかのように、StringGrid の内容からレポートを作成したいと考えています。
どのように?
QuickReport.OnNeedDataイベントハンドラーを使用します。MoreData(ブール値)と呼ばれるvarパラメーターを渡します。Trueに設定すると、再度呼び出されます。QuickReport.DataSourceプロパティを空白のままにし、TQRDBTextではなくプレーンなTQRTextコントロールを使用します。
// 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;
列のセットは StringGrid 内 (および対応する TClientDataSet 内) で固定されていると仮定します。ステップバイステップの説明:
CS.Append; CS['COL1'] := 'なんでも'; CS['COL2'] := 'その他'; CS.Post;
グリッド内の各行をループして、ループで追加/投稿を行う必要があります。COL1、COL2 などを別のループに割り当てることも、手動でコーディングすることもできます。