2012-04-22 10 views
7

私は小数点以下2桁を強制するように特定のセルを書式化したいと思います。データはElevateDBストアドプロシージャから来て、TDataSourceにフックされています。小数点以下2桁を表示するDBGrid列を書式設定する方法?

EDIT:SQLプログラミング注:

私はこれがちょうどElevateDBの問題だったかどうかわからないでした。 フィールドエディタについて知る前に、ストアドプロシージャ内でCAST(NumericField as NumericField as varchar(10))ステートメントを使用してSQLレベルでデータをフォーマットしようとしました。これにより、この特定のフィールドのフィールドエディタ内にDisplayFormatプロパティが公開されませんでした。私は、ストアドプロシージャからCAST()ステートメントを除去する場合

をdisplayFormatプロパティはフィールドエディタに現れました。

+0

数字フィールドのみがDisplayFormatプロパティを公開します。文字列フィールドには使用できません。 –

答えて

9

DBGrid列の書式設定は、基になるフィールドの書式設定によって行うことができます。完了していない場合は、データセットに静的フィールドを作成し、問題のフィールドのDisplayFormatプロパティを0.00に設定すると完了です。

+0

「静的フィールド」はどのように作成しますか?どのようにDisplayFormatを設定しますか? –

+0

フィールドエディタ(http://docwiki.embarcadero.com/RADStudio/en/Fields_Editor)を使用して、静的フィールド(永続フィールドとも呼ばれます)を作成します。各フィールドにはDisplayNameプロパティがあります。 –

+0

私は "右クリック"し、 "フィールドエディタ"を見つけました。しかし、DisplayFormatはありません。私は今、私が唾を吐く可能性のあるDelphiにとても苛立っています。 –

7

ウーヴェがちょうどcertian列をフォーマットするコード行を追加し、データセットを開いた後のコードで、答えと私は同じメソッドを使用します。

TFloatField(MyDs.FieldByName('Cost')).DisplayFormat := '0.00'; 
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; 
関連する問題