クリックした行の色を変えたい

解決


レタス  2020-02-14 15:17:04  No: 148558

DBGridでクリックした行の背景色を変えたいのですが、どうすればよいでしょうか。
環境は
Delphi10.2です。


take  2020-02-14 15:34:34  No: 148559

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


Mr.XRAY  2020-02-16 07:00:07  No: 148562

> 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 です.


レタス  2020-02-20 10:31:17  No: 148589

  if (gdSelected in State) then begin
    DBGrid1.Canvas.Brush.Color := 色;
    DBGrid1.DefaultDrawDataCell(Rect, Field, State);
↑の方法で解決しました。
回答して下さった方、ありがとうございました。


Mr.XRAY  2020-02-21 15:51:27  No: 148590

> Mr.XRAYさんのサイトを参考
http://mrxray.on.coocan.jp/Delphi/plSamples/060_DBGrid_MultiSelect.htm

記事を更新しました.
サンプルをいくつかのサンプルに分けて ( 分解して ),
その他のサンプルも追加しました.

> の方法で解決しました。

レスする側がこういうコードを書くと,
「どこに書くんですか ?」
という方がいますね (笑)


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








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