DBGridのデータをExcelに書き出す際の,画面表示について

解決


Ru  2006-01-30 18:49:46  No: 19870

こんにちわ。いつも書き込みの方を参考にさせていただいてます。
少し悩んでおりますので,相談にのってもらえると嬉しいです。

TQury  →  TDataSetProvider  →
TClientDataSet  →  TDataSource  →  TDBGrid

とデータを表示しています。
TDBGridに表示しているデータを,Excelに書き出す処理はできているのですが,
その際に,DBGridのカレントレコードを表すカーソルも同時に動いてしまいます。

Excelにデータ書き出し中は,最前面に処理中を促すメッセージを表示させ,
DGBrid1のEnabledをFalseにして,TDBGridの表示には変化がないようにしようとしています。

DBGridのカーソルを動かさずにExcelへのデータを抽出するには,
どのようにすればいいのでしょうか?ご存じの方がいれば手法を教えていただくと幸いです。

※現在は,Excelへのデータ書き出し中は,TDBGridを非表示にしてTPanelで蓋みたいにして隠しています(汗)

=====================================================================
var
   Excel: Variant;
   xlsWkb: Variant;
   xlsWks: Variant;
   i, j: Integer;

  try
    ・
    ・【Excel起動処理】
    ・

    {Excelの行タイトル設定}
    for i := 0 to DBGrid1.Columns.Count - 1 do begin
      xlsWks.Cells[1, i + 1].Value := DBGrid1.Columns[i].Title.Caption;
    end;

    {Excelにデータを書き込み}
    ClientDataSet1.First;
    for j := 0 to ClientDataSet1.RecordCount - 1 do begin
      for i := 0 to DBGrid1.FieldCount - 1 do begin
          xlsWks.Cells[j + 2, i + 1].Value := DBGrid1.Columns[i].Field.Text;
      end;
      ClientDataSet1.Next;
    end;

    ・
    ・【ファイル保存】
    ・
  finally
    ・
    ・【Excel解放処理】
    ・
  end;


ん?  2006-01-30 20:39:00  No: 19871

DataSet.DisableControls  と  DataSet.EnableControls  で、
コントロールへの表示更新の有効/無効切り換える。


Ru  2006-01-30 21:48:24  No: 19872

返信ありがとうございます。

DisableControls,EnableControlsなんてものがあったんですね。
(BeginUpdate等で検索してたので全然見つかりませんでした・・・)

試した結果、無事に希望していた動作になりました。
大変助かりました。ありがとうございます。


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

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






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