加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 如何为DBGrid特殊细胞着色?

发布时间:2020-12-15 09:07:50 所属栏目:大数据 来源:网络整理
导读:我有一个只有“是”和“否”值的列. 我想如果列值为“是”,则只有该单元格背景颜色为红色 否则“否”然后背景颜色为黄色 但是此代码为整行着色: if ADOTable1.FieldByName('Clubs').AsString = 'yes' thenbegin DBGrid1.Canvas.Brush.Color := clRed; DBGri
我有一个只有“是”和“否”值的列.
我想如果列值为“是”,则只有该单元格背景颜色为红色
否则“否”然后背景颜色为黄色
但是此代码为整行着色:

if ADOTable1.FieldByName('Clubs').AsString = 'yes' then
begin
  DBGrid1.Canvas.Brush.Color := clRed;
  DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;

编辑

谢谢你的回复.
我的真实代码看起来像那样. “netice”列只有“L,D,W”.

if Column.FieldName = 'netice' then
 begin
 if ADOTable1.FieldByName('netice').AsString = 'L' then
 DBGrid1.Canvas.Brush.Color := clgreen ;
 if ADOTable1.FieldByName('netice').AsString = 'D' then
 DBGrid1.Canvas.Brush.Color := clRed ;
 if ADOTable1.FieldByName('netice').AsString = 'W' then
 DBGrid1.Canvas.Brush.Color := clYellow ;
 end;
 DBGrid1.DefaultDrawColumnCell(Rect,State);
 end;

但我需要L – 绿色,D – 红色,W – 黄色
我正在使用Delphi 2010.

解决方法

您需要添加条件以限制仅将刷子颜色更改为您选择的列.在代码中它可能是:

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
  Field: TField;
begin
  // store the currently rendered cell's column assigned field reference
  // (if any) to the local variable (there's quite expensive getter)
  Field := Column.Field;
  // if the rendered cell's column has assigned a field and this field's
  // name is 'Clubs' (compared without case sensitivity),then,and only
  // then change the brush color...
  if Assigned(Field) and SameText(Field.FieldName,'Clubs') then
  begin
    if Field.AsString = 'yes' then
      DBGrid1.Canvas.Brush.Color := clRed
    else
      DBGrid1.Canvas.Brush.Color := clYellow;
  end;
  DBGrid1.DefaultDrawColumnCell(Rect,State);
end;

我在Column.FieldName之前更喜欢这个,因为Column.FieldName还不能保证链接数据集中有这样的字段.因此,以这种方式直接访问现场更安全.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读