DBGridでの全件を選択状態にする


レタス  2020-07-29 11:57:22  No: 148962

DBGridで表示されているデータをボタン押下により全件選択状態にしたいのですが何か良い方法はありますでしょうか?
(ちなみに選択した行はGridの描画イベントで色を付けるようにしております。)

一応考えてみた方法は、
①DBGridの行位置を先頭行にあてる。(DBGrid.DataSource.DataSet.First;)
②先頭行から順番に下に選択状態にする。(DBGrid.SelectedRows.CurrentRowSelected := True;)
③選択状態にしたら次の行へ移動。(DBGrid.DataSource.DataSet.Next;)

みたいな感じで考えましたがこれだとリストが勝手にスクロールされてしまいます。
これよりもいい方法を知っている方がいましたらお教えください。


HFUKUSHI  2020-07-29 13:50:04  No: 148963

VCLのデータベースコントロールは全く使っていないので外していたらすいません。
TDataSetのBookMarkプロパティを復元してあげたらどうですか?

Select All Rows in DbGrid
https://groups.google.com/g/borland.public.delphi.ide/c/w82o9XQjThk

Data.DB.TDataSet.Bookmark - RAD Studio API Documentation
http://docwiki.embarcadero.com/Libraries/Sydney/ja/Data.DB.TDataSet.Bookmark

ただ『単方向データセットは、ブックマークをサポートしていません。』とあるのでここだけ気をつけてください。


おかぽん  2020-08-03 12:39:21  No: 148967

DisableControls でしょうかね
http://docwiki.embarcadero.com/Libraries/Rio/ja/Data.DB.TDataSet.DisableControls

DBGrid.DataSource.DataSet.DisableControls := True;
//レコード移動が発生する処理
//必要であればBookMarkを使って、現在の位置を保存・復元する
DBGrid.DataSource.DataSet.DisableControls := False;


Mr.XRAY  2020-09-02 21:00:58  No: 149114

まだ一か月程度しか経っていませんが,
放置物件気味のようですので,手前味噌ですが参考までに.

[ 17_TDBGrid で 全レコードの選択と全レコードの選択解除 ]
http://mrxray.on.coocan.jp/Delphi/plSamples/060_DBGrid_MultiSelect.htm#17

※ やはり TDBGrid ではなく DBGrid が多いですね.


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








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