記事カテゴリ

ユーザー機能


 2024年4月29日(月) 11:03 JST

[Delphi] DBGrid のセルを内容によって文字色を変える

  • 投稿者:
  • 表示回数
    16,772

DBGrid のセルの色や、文字列の色を変更するには、自分で Canvas に対して色をしていなければなりません。
文字の色を変更するには、Canvas の Font プロパティの Color プロパティを変更します。
Font プロパティのそのほかのプロパティも変更可能なので、太字などにも変更可能です。
また、セル全体の色を変更するには Canvas プロパティを変更した上でさらに塗りつぶしが必要です。
塗りつぶしには、Canvas の FillRect メソッドを使用します。同名の API も存在しますが、メソッドの方が楽でしょう
範囲は、パラメータで与えられた Rect を使用します。詳細はヘルプや VCL ソースコードを参照してみてください。

以下はDelphi付属の「DBDEMOS」にある「COUNTRY」データベースを、グリッドに表示した場合のサンプルです。
人口が2千万人を超える国ついては、人口が赤色で描画されます。

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject); 
const Rect: 
  TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); 
begin 
  if Table1.FieldByName('Population').AsInteger > 20000000 then
  begin
    TDBGrid(Sender).Canvas.Font.Color := clRed;
  end;
  TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State); 
end; 

トラックバック

このエントリのトラックバックURL:
https://www.blackcat.xyz/trackback.php/ProgramingFAQ_del0014

以下のコメントは、その投稿者が所有するものでサイト管理者はコメントに関する責任を負いません。