2010-09-15 87 views
1

我有一个连接到ClientDataSet的DBGrid,它有一个字段UnitCost。我想要做的是将每个将分配给该字段的值限制在小数点后两位。除了验证每个输入值之外,还有更简单的方法吗?限制DBGrid中的小数位数

回答

4

你可以尝试设置ClientDataset.FieldByName('UnitCost').EditMask := '#.00';

+0

+1的EditMask中的工作为OP似乎有意限制输入值(而不仅仅是格式化显示值)。 – 2010-09-15 11:52:32

+0

我该如何去掉下划线和'。'在网格中,因为默认网格的值为__._? – rajeemcariazo 2010-09-16 06:39:53

3

我通常使用:

TFloatField(Myds.FieldByName('MyField')).DisplayFormat := '#.##'; 

这应该与所有类型的数据集组件

1
procedure TFMasterReport.DBDetail**DrawColumnCell**(Sender: TObject; 
    const Rect: TRect; DataCol: Integer; Column: TColumn; 
    State: TGridDrawState); 
begin 
    TFloatField(Tempdtl.FieldByName('TS_Rate')).DisplayFormat := '0.000'; 
    TFloatField(Tempdtl.FieldByName('TS_Tvol')).DisplayFormat := '0.00'; 
    TFloatField(Tempdtl.FieldByName('TS_permit')).DisplayFormat := '0.00'; 
    TFloatField(Tempdtl.FieldByName('TS_tax')).DisplayFormat := '0.00'; 
    TFloatField(Tempdtl.FieldByName('TS_nettval')).DisplayFormat := '0.00'; 
end;