2

LiveBinding を使用して、FireMonkey フォームの TEdit に表示する数値をフォーマットしようとしています。

バインディングの CustomFormat で Format メソッドを使用して、小数点以下 2 桁で数値をフォーマットしようとしています。

出力を「ハードコード」できます:

Format("Hello", %s)

これは機能していますが、使用するフォーマット文字列がわかりません。次のような標準の書式設定文字列を試してみると、

Format("%.2f", %s)

「フォーマットが無効であるか、引数と互換性がありません」という実行時エラーが発生します。

実際、フォーマット文字列に % 記号を含めるたびにエラーが発生するため、Format が異なるタイプの引数を取ると推測していますが、正しいフォーマット文字列が何であるかを示すドキュメントが見つかりません。

4

3 に答える 3

3

Format('%.2f',[%s])ではご利用いただけませんLiveBindings -> CustomFormat

%s はデータ用に予約されており、 TEdit 用に予約されています。これは文字列です

d : double;
s : string;
...
d := 1234.5678;
s:=Format('%.2f',[d]);

Format() は [int, decimal, double, float] をstringに変換します。
他のすべてはあなたにエラーを与えます:invalid argument
有効な例です

TLinkControlToField1 -> CustomFormat : "Double : "+UpperCase(%s)

Edit1.text で提供されます

Double : 1234.5678

OK 、「1234.5678」の Uppercase() は効果がないことがわかっています。
(%s) が文字列であることを表示するだけです

ソリューション:


ここに画像の説明を入力

于 2013-09-16T02:41:51.227 に答える
2

パラメータは %s として CustomFormat に渡されます。バインディング システムは、データがエバリュエーターに渡される前に、このパラメーターを事前解析します。したがって、CustomFormat 文字列内の他の % 記号はエラーになります。

通常のフォーマット文字列と同様に、2 つの % を入力することにより、リテラルの % 記号を含めることができます (つまり、%%)。

したがって、フォーマット文字列内の %s は %% に変換する必要があります。

Format('%%.2f', %s)

に解析されます

Format('%.2f', 67.66666)

次に解析されます

67.67

表示用。

最終出力にリテラル % を含めたい場合は、4 倍の % を入力する必要があります。

Format('%%.2f%%%%', %s)

になる

Format('%.2f%%', 67.6666)

として表示されます

67.67%

注: 通常の形式の関数は、値の配列である最終パラメーターを取ります。バインディング システムの Format メソッドは、可変長のパラメータ リストを受け取ります。

また、メソッド名は大文字と小文字が区別されます。「フォーマット」は正しく、「フォーマット」は失敗します。

于 2013-09-16T16:01:19.967 に答える