如何格式化 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如何实现水平滚动条同步滚动?