8

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

编辑:SQL 编程注意:

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

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

4

3 回答 3

9

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

于 2012-04-22T20:35:10.233 回答
9

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

  TFloatField(MyDs.FieldByName('Cost')).DisplayFormat := '0.00';
于 2012-04-22T20:55:37.620 回答
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;
于 2012-04-23T10:37:32.157 回答