お世話になっております。
Delphi2007においてQRReportを使用しておりますが、繰り返してプレビュー画面を表示(8回程度)すると
「frmPreviewは既に使用されています」
とエラーとなってしまいます。
していることはテーブルが使えないため、データに見立ててfrmPreviewに配列でStringListを持たせて、1行分のデータを配列に渡した後プレビューしています。preview後はfrmPreview.freeしております
Delphiも初心者、QuickReportも初心者で何が悪いのか分かりません
よろしくお願いいたします
==================< frmMain >========================
frmReport := TfrmReport.Create(self);
try
frmReport.PageCount := 1;
SetLength(frmReport.ArrayList, (stgList.RowCount-1) * (1+intPartsCnt));
listCnt := 0;
//StringGridの内容を編集
for i := 1 to stgList.RowCount - 1 do begin
frmReport.ArrayList[1] := TStringList.Create;
frmReport.ArrayList[1].Add(stgList.Cells[1, i]);
frmReport.ArrayList[1].Add(stgList.Cells[2, i]);
frmReport.ArrayList[1].Add(stgList.Cells[3, i]);
frmReport.ArrayList[1].Add(stgList.Cells[4, i]);
frmReport.ArrayList[1].Add(stgList.Cells[5, i]);
end;
frmReport.TotalCount := stgList.RowCunt;
//プレビュー
frmReport.QuickRep1.Prepare;
frmReport.QuickRep1.Preview;
finally
frmReport.Free;
end;
==================< frmReport >==========================
procedure TfrmReport.QuickRep1NeedData(Sender: TObject; var MoreData: Boolean);
var
begin
if i <= TotalCount then begin
//データ行表示
QR_lblDetail_hinmei.Caption := ArrayList[i][1];
QR_lblDetail_amount.Caption :=ArrayList[i][2];
QR_lblDetail_Serial.Caption :=ArrayList[i][3];
QR_lblDetail_Serial.Caption :=ArrayList[i][4];
QR_lblDetail_Serial.Caption :=ArrayList[i][5];
QR_lblDetail_Remarks.Caption := '';
MoreData := true;
i := i + 1;
end else begin
//NeedDataイベント終了
MoreData := false;
end;
end;
printform側で配列のエラーが出ていたようです
解決いたしました
ツイート | ![]() |