【问题标题】:How to Format a DBGrid Column to Display Two Decimal Places? [duplicate]如何格式化 DBGrid 列以显示两个小数位? [复制]
【发布时间】:2012-04-22 20:26:01
【问题描述】:

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

编辑:SQL 编程说明:

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

当我从存储过程中删除 CAST() 语句时,DisplayFormat 属性出现在 Fields Editor 中。

【问题讨论】:

  • 只有数字字段公开 DisplayFormat 属性 - 在字符串字段中没有用处。

标签: delphi formatting lazarus dbgrid elevatedb


【解决方案1】:

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

【讨论】:

  • 如何创建“静态字段”?如何设置 DisplayFormat?
  • 使用fields editor 创建静态(也称为持久)字段。每个字段都有一个属性 DisplayName。
  • 我“右键单击”并找到“字段编辑器”。但是......没有DisplayFormat。我现在对 Delphi 感到非常沮丧,我可以吐了。
  • 在字段编辑器中,右键单击并选择“添加所有字段”,然后单击所需的字段,在对象检查器中,您应该会看到 displayformat 属性,并设置为## #.00
  • 感谢您的耐心等待...请阅读对 OP 的编辑。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    您可以使用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;
    

    【讨论】:

      猜你喜欢
      • 2016-09-28
      • 1970-01-01
      • 2011-01-01
      • 2022-07-07
      • 2018-02-12
      • 1970-01-01
      • 2016-10-04
      • 1970-01-01
      相关资源
      最近更新 更多