在livebindings CustomFormat中使用Format

时间:2013-09-14 11:54:29

标签: delphi delphi-xe4 livebindings

我正在尝试使用LiveBindings格式化数字,以便在FireMonkey表单上的TEdit中显示。

我正在尝试使用绑定的CustomFormat中的Format方法来格式化带有两位小数的数字。

我可以'硬编码'输出:

Format("Hello", %s)

这是有效的,但我无法确定要使用的格式字符串。如果我尝试标准格式字符串,例如,

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

我收到运行时错误“格式无效或与参数不兼容”。

每当我在格式字符串中包含%符号时,我都会收到错误,因此我猜测Format会使用不同类型的参数,但我找不到任何文档来说明正确的格式字符串是什么。< / p>

3 个答案:

答案 0 :(得分:2)

您无法在Format('%.2f',[%s])

中使用LiveBindings -> CustomFormat

%s是为数据和TEdit保留的,它是一个字符串

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

Format()是将[int,decimal,double,float]转换为字符串
所有其他人都会给你一个错误:invalid argument
有效是例如

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

将在Edit1.text

中为您提供
Double : 1234.5678

好的,我们知道'1234.5678'的大写()没有效果 仅显示(%s)是一个字符串

<强>解决方案:


enter image description here

答案 1 :(得分:2)

该参数作为%s传递给CustomFormat。在将数据传递给求值程序之前,绑定系统会预先确定此参数。因此,CustomFormat字符串中的任何其他%符号都会出错。

与普通格式字符串一样,您可以通过加倍%(即%%)来包含文字%符号。

因此,格式字符串中的任何%s都需要转换为%%,例如

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

将被解析为

Format('%.2f', 67.66666)

然后解析为

67.67

显示。

如果要在最终输出中包含文字%,则需要设置四倍%,例如

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

变为

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

并显示为

67.67%

注意:普通格式函数采用最终参数,该参数是值数组。绑定系统中的Format方法采用可变长度的参数列表。

此外,方法名称区分大小写。 '格式'是正确的,'格式'将失败。

答案 2 :(得分:0)

输入 67.6666

自定义格式:ToStr(Format('%%.2f', Value)) + '%%'

输出 67.00%