DELPHI FireMonkey下Grid用法笔记

文章介绍了在FireMonkey环境下使用Grid时,如何根据条件设置Grid单元格的背景色和字体颜色,以及如何在DrawColumnCell事件中实现数据格式化,包括货币和浮点数的显示。示例代码展示了对特定列的条件判断和颜色设置,以及调整数字列的显示精度和千位分隔符的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以前在VCL模式,使用cxGrid做什么都方便,后面使用FireMonkey的时候发现,有些简单的东西实现起来,还挺麻烦,下面就针对Grid网格的使用做一些笔记

笔记一:给网格Grid根据条件设置背景颜色与字体颜色
实现方式为,在ColumnCell事件中增加如下代码:

procedure TFrmWorkTask.GridBindSourceDB1DrawColumnCell(Sender: TObject;
  const Canvas: TCanvas; const Column: TColumn; const Bounds: TRectF;
  const Row: Integer; const Value: TValue; const State: TGridDrawStates);
var bgBrush: TBrush;
begin
   bgBrush:=TBrush.Create(TBrushKind.Solid,TAlphaColors.White);//定义缺省颜色
   try
   if Column.Index=9 then  //针对第9列进行操作
   begin
     if trim(Value.ToString)='超期' then  //判断条件为内容是否为“超期”
       begin
        //设置背影颜色
         bgBrush.Color := TAlphaColors.Yellow;  //背景颜色为黄色
         Canvas.FillRect(Bounds,0,0,[],1,bgBrush);
         //设置字体颜色
         Canvas.Fill.Color := TAlphaColors.Black;  //字体颜色为黑色
         Canvas.FillText(Bounds,Value.AsString,false,1,[],TTextAlign.Leading,TTextAlign.Center);
       end
     else
       begin
         bgBrush.Color := TAlphaColors.White;
         Canvas.FillRect(Bounds,0,0,[],1,bgBrush);
         Canvas.Fill.Color := TAlphaColors.Black;
         Canvas.FillText(Bounds,Value.AsString,false,1,[],TTextAlign.Leading,TTextAlign.Center);
       end;
   end;
   finally
     bgBrush.free;
   end;
end;

实际效果如下图
在这里插入图片描述

【笔记二】Grid网格里面的数据格式化
我将格式化数据放在了DrawColumnCell事件中,当然也可以放在其它事件

procedure TFrmSmtOEE.Grid1DrawColumnCell(Sender: TObject; const Canvas: TCanvas;
  const Column: TColumn; const Bounds: TRectF; const Row: Integer;
  const Value: TValue; const State: TGridDrawStates);
var
  i:Integer;
begin
    for i:= 0 to Grid1.ColumnCount - 1 do
    begin
      if (Grid1.Columns[i] is TCurrencyColumn) or {假如是整型数据 }
        (Grid1.Columns[i] is TIntegerColumn) then
      begin
          TCurrencyColumn(Grid1.Columns[i]).DecimalDigits:= 3; {三位数进行分隔 }
          TCurrencyColumn(Grid1.Columns[i]).ShowThousandSeparator := true;
      end;

      if (Grid1.Columns[i] is TFloatColumn) then  {假如是浮点数据 }
      begin
          TCurrencyColumn(Grid1.Columns[i]).DecimalDigits:= 2; {保留两位小数点 }
          TCurrencyColumn(Grid1.Columns[i]).ShowThousandSeparator := true;
      end;
    end;
end;

显示的数据结果如下图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值