DBGridでクリックした行の背景色を変えたいのですが、どうすればよいでしょうか。
環境は
Delphi10.2です。
Optionsプロパティに dgRowSelect を選択する。
編集する必要があるなら
DrawColumnCellメソッド内で選択状態にして描画する
Mr.XRAYさんのサイトを参考
http://mrxray.on.coocan.jp/Delphi/plSamples/060_DBGrid_MultiSelect.htm
こっちの質問の方で回答が来てるけど、そっち先対応した方が良いかと思います。
DBGridでカラムのタイトルを縦書き
https://www.petitmonte.com/bbs/answers?question_id=29684
> DBGridでクリックした行の背景色を変えたいのですが、どうすればよいでしょうか。
反応がないようですが.
どうすけばいいのか言えば,描画用のイベントでカスタム描画します.
TDBGrid の Canvas に対して描画します.
背景色を変えると言うのは,矩形領域を塗り潰すということです.
そういうことを知らないと始まりません.
[ カスタム描画における TCanvas ( 入門者用 ) ]
http://mrxray.on.coocan.jp/Delphi/Others/A_UltraIntro02.htm
私のサイトのサンプルは業務アプリ用です.
クリックした行の背景色を変えるのですが,
実際にはクリックして選択したレコード (複数の時もある) 選択操作用てす.,
TBookMarkList という機能を使用しています.
また,TDBGrid の継承クラスを作成しないと無理があります.
クリックした行の背景色を変更する方法はいくつか考えられますが,
> Optionsプロパティに dgRowSelect を選択する。
する方法が簡単です..
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
begin
if (gdSelected in State) then begin
DBGrid1.Canvas.Brush.Color := clLime;
DBGrid1.DefaultDrawDataCell(Rect, Field, State);
end;
end;
動作確認は Windows 7 U64(sp1) + Delphi XE5(UP2) Pro VCL-32 です.
if (gdSelected in State) then begin
DBGrid1.Canvas.Brush.Color := 色;
DBGrid1.DefaultDrawDataCell(Rect, Field, State);
↑の方法で解決しました。
回答して下さった方、ありがとうございました。
> Mr.XRAYさんのサイトを参考
> http://mrxray.on.coocan.jp/Delphi/plSamples/060_DBGrid_MultiSelect.htm
記事を更新しました.
サンプルをいくつかのサンプルに分けて ( 分解して ),
その他のサンプルも追加しました.
> の方法で解決しました。
レスする側がこういうコードを書くと,
「どこに書くんですか ?」
という方がいますね (笑)
ツイート | ![]() |