いつもお世話になっております。
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』はフィールド名です。
以上、宜しくお願い致します。
データセットとの紐付けが抜けてるから?
TFltKin.DataSet := Query1;
auさん
ご回答ありがとうございます。
データセットに関しては、
を見ると自動的に割り付けられるらしいので記述していませんでした。
また、DBの値は表示されているので動作もしていると思います。
実は最初、auさんの通りにデータセットを直接指定して作成していたのですが
「項目名がありません」というエラーが出てしまい、
Query1.FieldDefs.Add('KINGAKU',ftFloat);
TKingaku:= Query1.FieldDefs.Find('KINGAKU').CreateField(nil);
の2行を追加してエラーを解消しました。
しかし、TFieldDefオブジェクトから作成したらデータの表示は出来たのですが
DisplayFormatが効かないという事態になっております。
やはり何か作成の手順が間違っているのですかね。。。
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適用されてます
auさん
素晴らしいサンプルをありがとうございます。
バッチリDisplayFormatが適用されました。
TFltKin:=TFloatField.Create(Query1);
がポイントらしく、上記の形でオブジェクトを作成したら
データセットを指定してもエラーが出ませんでした。
凄く勉強になりました。
ありがとうございました。
ツイート | ![]() |