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

Posted

技术标签:

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

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

编辑:SQL 编程说明:

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

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

【问题讨论】:

只有数字字段公开 DisplayFormat 属性 - 在字符串字段中没有用处。 【参考方案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;

【讨论】:

以上是关于如何格式化 DBGrid 列以显示两个小数位? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

delphi6 两个dbgrid如何实现水平滚动条同步滚动?

您将如何在 Word 或 RTF 文档的表格中显示 DBGrid 的内容?

在DELPHI中如何在dbgrid 显示查询数据

delphi DBGrid里面的值如何自动更新

如何格式化小数以始终显示 2 个小数位?

dbgrid如何在最左边的列上显示行序号