はじめまして。
ID:Id
test1:Integer;
test2:Integer;
test3:Integer;
test4:Integer;
このようなTTableがあります。1000単位の入力をしたいのでPOST時に
1000かけます。すべてのフィールドを一括で入力すればいいのですが、
test2だけ修正したい場合、StateプロパティがdsEdit状態になるため
修正してないフィールドが更に1000かけられた状態になってしまいます。
この場合、どのようにすれば重複せず1000単位で登録できますか?
わかりづらい文章で申し訳ございません。
よろしくお願いします。
1000かけるのは、テーブルのbeforePostでやっています。
表示するのを1000で割った値の計算項目を作成してそれを表示して、入力された値を登録時に1000倍すれば問題は起こらないのではないですか?
HOtaさん返信ありがとうございます。
>入力された値を登録時に1000倍すれば問題は起こらないのではないですか?
実際にはDBGridに直接入力してるのですが、入力された値(フィールド)の
判定は出来ますか?1項目だけ修正した際、修正していない項目も1000倍になってしまいます。
FieldのonGetText,onSetTextでなんとかできます。
他のイベントは無用です。
入力は、計算項目に入力して、
実際の項目は表示しないようにすれば良いでしょう。
しみわたりさん、HOtaさんありがとうございます。
返信遅くなりすみませんでした。
>FieldのonGetText,onSetTextでなんとかできます。
onGetTextで受け取った値に1000をかけて、onSetTextで表示出来ました。
この場合表示のみ1000倍になっているようですが、中身も1000倍に
出来ますか?
>実際の項目は表示しないようにすれば良いでしょう。
私の説明の仕方が悪かったようですが(^^;
表示は実数で、入力だけ1/1000でやりたいです。
入力の値が最低1000なので・・・
入力値「100」表示「100,000」実数「100,000」です。
この1000倍の値をセットした先は、Fieldですよね。
でしたら、POSTすれば実際のField値もこの値が入り、
それを表示しているので問題あるません。
私のほうがいまいち理解できていませんでした。。
onGetText
入力[100]表示[100,000]データ[100]
でしたが、
onGetTextの1000倍をやめて
onSetTextで1000倍しましたら、期待通り
入力[100]表示[100,000]データ[100,000]に
なってくれました。
HOtaさん何度もアドバイスして頂き本当にありがとうございましたm(__)m
ツイート | ![]() |