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で扱う方法は、ないのでしょうか? よろしくお願いいたします。
以下の 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 なので、
次のアップデータで修正されている可能性があります。
DEKOさん ありがとうございます。
・・・ということは、DelphiがUpdateされるまでは、TFloatField.Valueに整数値を入力したときには値をテストできないですね!!
今作っているプログラムは、来春ころまでにできればいいので、それまで待っています。
追加情報です。
TFloatFieldのValueは、整数値の時だけ「0」になるのではなく
1.125 1.25 1.5 1.75.....でも「0」になるようです。
ツイート | ![]() |