如何格式化DBGrid列以显示两个小数位?

时间:2012-04-22 20:26:01

标签: delphi formatting lazarus dbgrid elevatedb

我想格式化特定单元格以强制两位小数。数据来自ElevateDB存储过程并挂钩到TDataSource。

编辑:SQL编程注:

我不确定这是否只是一个ElevateDB问题。在了解字段编辑器之前,我尝试使用存储过程中的CAST(NumericField as varchar(10))语句在SQL级别格式化数据。通过这样做,它没有在字段编辑器中为此特定字段公开 DisplayFormat 属性。

当我从存储过程中删除CAST()语句时, DisplayFormat 属性显示在字段编辑器中。

3 个答案:

答案 0 :(得分:9)

您可以通过格式化基础字段来格式化DBGrid列。如果没有完成,请在数据集中创建静态字段,然后将相关字段的DisplayFormat属性设置为0.00,您就完成了。

答案 1 :(得分:7)

我使用与Uwe回答相同的方法,在打开数据集之后的代码中,只需添加以下代码行来格式化certian列:

  TFloatField(MyDs.FieldByName('Cost')).DisplayFormat := '0.00';

答案 2 :(得分:2)

您可以使用DrawDataCell事件格式化字段。

procedure TFormMain.DBGridCompareDrawDataCell(Sender: TObject;
  const Rect: TRect; Field: TField; State: TGridDrawState);
begin
  if Field.Name = 'FIELDNAME' then
    TFloatField(Field).DisplayFormat := '#,##0.00';
end;