こんにちわ。いつも書き込みの方を参考にさせていただいてます。
少し悩んでおりますので,相談にのってもらえると嬉しいです。
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;
DataSet.DisableControls と DataSet.EnableControls で、
コントロールへの表示更新の有効/無効切り換える。
返信ありがとうございます。
DisableControls,EnableControlsなんてものがあったんですね。
(BeginUpdate等で検索してたので全然見つかりませんでした・・・)
試した結果、無事に希望していた動作になりました。
大変助かりました。ありがとうございます。
ツイート | ![]() |