画面で条件を指定し検索して結果を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の内容を印刷する方法はありますでしょうか?
データセットがQueryなのですから、もう一つデータセットを用意して
同じSQL文をセットし、そちらを印刷用にするのがよろしいかと思われます。
カレントレコードが移動するのですから、同じデータセットを使う限り、
DBGridでのポインタ(カレントレコード)移動は避けられません。
DBGridの非表示、或いはデータソース切断を行えばスクロールは避けられますが、
これはお望みの挙動ではないと思いますし...。
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;
ツイート | ![]() |