DBグリッドのセルごとの色付けについて


ロッテ  2006-03-31 23:39:32  No: 20762

DBグリッドのセル毎の色付けをするのに
DBGrd.canvas.TextRect()  までたどりついたのですが、
いまいち、このTextRectの意味がわかりません、
どなたか、教えて頂けますでしょうか?
宜しくお願い致します。


igy  2006-04-01 00:14:56  No: 20763

Delphi5のヘルプ
TCanvasのTextRect メソッドによると・・・

TextRect メソッドを呼び出すと,限定された四角形の領域内に
文字列を書き込むことができます。
Rect パラメータで渡される四角形の外にはみ出してしまう文字列部分は
クリッピングされ,画面上には表示されません。
テキストの左上隅の位置は点(X, Y)になります。


ロッテ  2006-04-01 00:22:26  No: 20764

限定された四角形の領域内となると、セルというより、自分で指定した範囲ってことになるのでしょうか?

そういう意味だと、各セルを色付けするのですこしつらいですね。

TextRect以外に各セルを色付けできるようなメソッドはありますでしょうか?


igy  2006-04-01 00:57:24  No: 20765

[Delphi-ML:63949] DBGrid :行の色変更に伴う問題
http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=063949
あたりが参考になるかもしれません。


Ru  2006-04-01 00:57:48  No: 20766

DrawColumnCellイベント使えばできるかな・・・

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin

  if (セルに色をつけたい条件) then
  begin
    DBGrid1.Canvas.Brush.Color := 指定色(clSkyBlue等);
  end;

  DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);

end;


ロッテ  2006-04-01 02:14:34  No: 20767

igyさん、ありがとうございます。参考に調べて見ます。

Ruさん、その方法で現在試したところ、レコード全ての色が変わってしまうようです。

もう少し、調べて見ます。

ご回答ありがとうございます。


Ru  2006-04-04 21:45:52  No: 20768

返信遅くなりました。
こちらでは,特定のGridのみ色変更できます。

(実行例)
if (セルに色つけたい条件) AND (DataCol = 1) then
begin
  DBGrid1.Canvas.Brush.Color := 指定色(clSkyBlue等);
end;

これでセルの色付けたい条件に一致したデータかつ2列目のみ,色を変更することはできました。
特定の列を変える条件さえ導き出せればできるとは思います。

あとは環境が違ったりすると駄目なのでしょうかねぇ。

環境:WinXP,Delphi7


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

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






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