DBグリッドのセル毎の色付けをするのに
DBGrd.canvas.TextRect() までたどりついたのですが、
いまいち、このTextRectの意味がわかりません、
どなたか、教えて頂けますでしょうか?
宜しくお願い致します。
Delphi5のヘルプ
TCanvasのTextRect メソッドによると・・・
TextRect メソッドを呼び出すと,限定された四角形の領域内に
文字列を書き込むことができます。
Rect パラメータで渡される四角形の外にはみ出してしまう文字列部分は
クリッピングされ,画面上には表示されません。
テキストの左上隅の位置は点(X, Y)になります。
限定された四角形の領域内となると、セルというより、自分で指定した範囲ってことになるのでしょうか?
そういう意味だと、各セルを色付けするのですこしつらいですね。
TextRect以外に各セルを色付けできるようなメソッドはありますでしょうか?
[Delphi-ML:63949] DBGrid :行の色変更に伴う問題
http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=063949
あたりが参考になるかもしれません。
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;
igyさん、ありがとうございます。参考に調べて見ます。
Ruさん、その方法で現在試したところ、レコード全ての色が変わってしまうようです。
もう少し、調べて見ます。
ご回答ありがとうございます。
返信遅くなりました。
こちらでは,特定のGridのみ色変更できます。
(実行例)
if (セルに色つけたい条件) AND (DataCol = 1) then
begin
DBGrid1.Canvas.Brush.Color := 指定色(clSkyBlue等);
end;
これでセルの色付けたい条件に一致したデータかつ2列目のみ,色を変更することはできました。
特定の列を変える条件さえ導き出せればできるとは思います。
あとは環境が違ったりすると駄目なのでしょうかねぇ。
環境:WinXP,Delphi7
ツイート | ![]() |