DbGridの内容をクイックレポートで印刷について


アリス  2008-01-25 09:27:57  No: 29472

画面で条件を指定し検索して結果をDbGridに表示しています。
表示はOKです。
その後、印刷ボタンを押下で内容をA4横で印刷(クイックレポート)したいです。
下記の印刷ボタン押下するとDBGrid1の表示が「激しくスクロール」して検索結果の
最後まで表示がとまりません。
印刷ボタンを押下しても画面の表示はそのまま停止状態で印刷するには
どのようにするとよろしいのでしょうか?
Delphi5.0

uses
 CustUriageMeiPrn;
//DB検索
procedure TFrmCustUriageMei.Disp;
begin
  with Query1 do begin
        DBGrid1.DataSource:=nil;
        Active := False;
        SQL.Clear;
        SQL.Add('SELECT 省略・・・');//SQL編集
        Active := True;
        DBGrid1.DataSource:=DataSource1;
        First;
       end;
  end;
end;

//印刷ボタン
procedure TFrmCustUriageMei.Button2Click(Sender: TObject);
begin
  FrmCustUriageMeiprn.QuickRep1.DataSet := IBQuery1;
  FrmCustUriageMeiprn.QRDBText1.DataSet := IBQuery1;
  FrmCustUriageMeiprn.QRDBText2.DataSet := IBQuery1;
  FrmCustUriageMeiprn.QRDBText3.DataSet := IBQuery1;
  FrmCustUriageMeiprn.QRDBText4.DataSet := IBQuery1;
end;

よろしくお願いします。
※他にもDBGridの内容を印刷する方法はありますでしょうか?


DEKO  2008-01-25 13:46:20  No: 29473

データセットがQueryなのですから、もう一つデータセットを用意して
同じSQL文をセットし、そちらを印刷用にするのがよろしいかと思われます。

カレントレコードが移動するのですから、同じデータセットを使う限り、
DBGridでのポインタ(カレントレコード)移動は避けられません。

DBGridの非表示、或いはデータソース切断を行えばスクロールは避けられますが、
これはお望みの挙動ではないと思いますし...。


Ru  2008-01-25 17:42:47  No: 29474

DisableControls と EnableControls で
データベース対応コントロール内での
データ表示を無効/有効を切り替えます。

しかし内部的にレコード位置は移動しますので
ブックマークを使って制御すればいいかと。

var
  BookMarkTmp : TBookMark;

begin

  Query1.DisableControls;
  try
    BookMarkTmp := RHRMDataSet.GetBookmark;
    try

      //処理

    finally
      Query1.GotoBookmark(BookMarkTmp);
      Query1.FreeBookmark(BookMarkTmp);
    end;

  finally
    Query1.EnableControls;
  end;

end;


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加