DBEditで数値のカンマ編集

解決


超初心者  2006-08-29 02:00:49  No: 23028

Delphi6Pro.とインターベースで初めてデータベースアプリを作成しようとしましたが、金額等のDBEdit欄でカンマ編集(1,234,567)を設定したいのですがプロパティに見当たりません。どこを探したらいいのでしょうか教えてください。


Syake  2006-08-29 02:51:45  No: 23029

>プロパティに見当たりません
当方はDataControlsは全くといって良いほど使いませんので
わからないのですが、それは無いと思います。
オリジナルコンポ作成すれば可能なのかな?
SQL文で抽出時点でカンマ付で呼び出せるようですが、編集となると
駄目でしょうね。

私ならいっその事DataControlsを使用せず、通常のコンポーネントで
対応します。(といっても常にそうですが)
それなら、如何様にもできますので・・・・
う〜む、答えになってない。


Syake  2006-08-29 04:06:29  No: 23030

DataSet等の項目エディタを使用すればできそうですが・・・

例えばDataSetのCommandTextを設定後、項目エディタで項目を追加。
この追加した項目のプロパティでカンマ付で表示するように設定。
項目エディタからフォームへドラック。
で、Editがフォームに表示される。
みたいです。
いずれにしても、DBEditを使用したわけでは無いので何とも・・・


ん?  2006-08-29 07:37:54  No: 23031

Field の OnGetText, OnSetText あたりで、なんとかできます。

データセットを開いた後、
Dataset.Fields[1].OnGetText := OnGetText;
Dataset.Fields[1].OnSetText := OnSetText;

procedure TForm1.OnGetText(Sender: TField; var Text: String; DisplayText: Boolean);
begin
  Text := Format('%0.0n', [Sender.AsDouble]);
  //Sender.AsInteger * 1.0 のほうがいいのか?
end;

procedure TForm1.OnSetText(Sender: TField; const Text: String);
begin
  //Textから「,」を削り取って数値化
  Sender.AsInteger := てきとうな関数?(Text);
end;

記憶を頼りにしたのでちょっと曖昧ですが、こんな感じです。


GTBass  2006-08-29 16:58:09  No: 23032

こんにちは
私はSyakeが書かれている方法で実現しています。
> DataSet等の項目エディタを使用すればできそうですが・・・

TQuery,TTable(私はTIBQueryやTIBDataSetを使用しています)をダブルクリックすると項目エディタが出てきますので、「項目を追加」します。
表示フォーマットを変更したい項目を選択し、DisplayFormatに#,###とすると、3桁のカンマ区切りになります。
私はこの方法を利用して、単価表示(@#,###)や金額表示(¥#,###)を行っています。
これを使うと、DBEditだけでなく、DBGrid,DBTextでも任意の表示形式に出来ます。

バージョン違いでこの方法が採れなくなっていることは無いと思いますが、私の環境はD5+IBです。


GTBass  2006-08-29 17:06:53  No: 23033

すみません。早とちりが有りました。
私の方法では、入力・編集時に「,」を入れることには対応しません。
例えば、10000と言う数字を入れたい時、タイピングは10000でなければならず、10,000とは入れられないと言うことです。私は10000とタイピングしたものが、10,000と表示されるようにする方法を書いています。
ですから、入力・編集時に10,000とタイプしたいのであれば、回答になりません。
ごめんなさい。


超初心者  2006-08-29 20:21:54  No: 23034

皆様早々のレスありがとうございます。
DBEditではGTBassさんの方法しかないようですね。
皆さんはDBEditは使われないようですが当方初心者のため使っています。
一般のコントロールでもいいのでしょうがコードは結構書かなければなさそうなので今は試していません。Delphiのフレームワークを把握した上で利用したいと思います。


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

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






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