TFloatFieldのOnValiateでのValueの扱いについて

解決


サトウ  2012-11-14 06:24:36  No: 43368

TFloatFieldのOnValidateで分からない現象に悩まされています。
対処方法をご教授願います。

WindowsXpでDelphiXE3を使用しています。

TSQLTable→TDataSetProbvider→TClientDataSetとObjectを作成し
クライアントデータセットにTFloatFieldを作成します。仮にこれをField1
とします。
このFieldの入力値を検査する為、OnValidateの処理を作成しました。

procedure TEngine.Field1Validate(Sender: TField);
var
  Value: double;
  s: string;
begin
  Value   := TFloatField(Sender).AsFloat;
  s  := TFloatField(Sender).AsString;
  ・・・・    以下略

TDBEditを介して、このField に値として 1.1  を入力するとValue,sとも入力した値が取り込めますが、値として 1を入力するとValueはゼロが、sは空白が帰ってきます。
1の代わりに、1.0と入力しても同じ結果です。
TDBeditの表示は、どちらも入力した値を表示しています。

ためしに、OnChangeでValueの値を確認しましたが、ここでは入力した値がそのまま取り込めます

TFloatFieldのValueは、小数点以下の値を持たない浮動小数点をValueで扱う方法は、ないのでしょうか?  よろしくお願いいたします。


DEKO  2012-11-14 06:53:37  No: 43369

以下の QC と同じようですね。

Report No: 109750            Status: Resolved
During TField.OnValidate event, TField.GetData does not return value stored in FValueBuffer
http://qc.embarcadero.com/wc/qcmain.aspx?d=109750
QCWIN:Defect_No=109750

Status が Resolved、Resolution が Checked In なので、
次のアップデータで修正されている可能性があります。


サトウ  2012-11-14 20:12:26  No: 43370

DEKOさん  ありがとうございます。

・・・ということは、DelphiがUpdateされるまでは、TFloatField.Valueに整数値を入力したときには値をテストできないですね!!

今作っているプログラムは、来春ころまでにできればいいので、それまで待っています。


サトウ  2012-11-28 06:10:01  No: 43371

追加情報です。

TFloatFieldのValueは、整数値の時だけ「0」になるのではなく
1.125  1.25  1.5  1.75.....でも「0」になるようです。


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

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






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