FieldのDisplayFormatを有効にするには?

解決


ふろんてぃあ  2011-01-25 03:06:50  No: 39891

いつもお世話になっております。
Delphi2010+XP SP3で開発しております。

Queryコンポーネントの項目の追加でDisplayFormatが設定できるのですが
プロパティ等の設定をなるべくプログラム内で行いたいので、
色々と調べながら以下のプログラムを作成したのですがDisplayFormatが
どうしても有効になりません。
何か足りない設定や処理があるのかもしれませんので、どなたか分かる方
がいらっしゃいましたらご教授して頂けると助かります。

procedure TfrmTest.FormCreate(Sender: TObject);
var
  TKingaku:TField;
  TFltKin:TFloatField;
begin

  Query1.FieldDefs.Add('KINGAKU',ftFloat);

  TKingaku:= Query1.FieldDefs.Find('KINGAKU').CreateField(nil);

  TFltKin:=TFloatField.Create(TKingaku);
  TFltKin.FieldName:='KINGAKU';
  TFltKin.DisplayFormat:='#,###';

  Query1.Fields.Add(TFltKin);

end;

本当はフィールドがいっぱいありますが、動作確認の為に1つのフィールド
でテストを行っております。
金額を表示するので、カンマを入れたいです。
データベースの『KINGAKU』はフィールド名です。

以上、宜しくお願い致します。


au  2011-01-25 18:05:46  No: 39892

データセットとの紐付けが抜けてるから?
TFltKin.DataSet := Query1;


ふろんてぃあ  2011-01-25 19:34:31  No: 39893

auさん

ご回答ありがとうございます。
データセットに関しては、

http://docs.codegear.com/products/rad_studio/radstudio2007/RS2007_helpupdates/HUpdate4/JA/html/delphivclwin32/DB_TField_DataSet.html

を見ると自動的に割り付けられるらしいので記述していませんでした。
また、DBの値は表示されているので動作もしていると思います。

実は最初、auさんの通りにデータセットを直接指定して作成していたのですが
「項目名がありません」というエラーが出てしまい、

Query1.FieldDefs.Add('KINGAKU',ftFloat);
TKingaku:= Query1.FieldDefs.Find('KINGAKU').CreateField(nil);

の2行を追加してエラーを解消しました。
しかし、TFieldDefオブジェクトから作成したらデータの表示は出来たのですが
DisplayFormatが効かないという事態になっております。

やはり何か作成の手順が間違っているのですかね。。。


au  2011-01-25 20:58:11  No: 39894

FieldDefsはまったく触らず

Query1.SQL.Text := 'SELECT KINGAKU FROM TABLE1';

TFltKin:=TFloatField.Create(Query1);
TFltKin.FieldName:='KINGAKU';
TFltKin.DisplayFormat:='#,###';
TFltKin.DataSet:=Query1;

Query1.FieldDefs.Update;
Query1.Open;

こんな感じでどうでしょう?
うちの環境だとこれでDisplayFormat適用されてます


ふろんてぃあ  2011-01-25 22:29:58  No: 39895

auさん

素晴らしいサンプルをありがとうございます。
バッチリDisplayFormatが適用されました。

TFltKin:=TFloatField.Create(Query1);

がポイントらしく、上記の形でオブジェクトを作成したら
データセットを指定してもエラーが出ませんでした。
凄く勉強になりました。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加