我正在尝试使用LiveBindings格式化数字,以便在FireMonkey表单上的TEdit中显示。
我正在尝试使用绑定的CustomFormat中的Format方法来格式化带有两位小数的数字。
我可以'硬编码'输出:
Format("Hello", %s)
这是有效的,但我无法确定要使用的格式字符串。如果我尝试标准格式字符串,例如,
Format("%.2f", %s)
我收到运行时错误“格式无效或与参数不兼容”。
每当我在格式字符串中包含%符号时,我都会收到错误,因此我猜测Format会使用不同类型的参数,但我找不到任何文档来说明正确的格式字符串是什么。< / p>
答案 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)是一个字符串
<强>解决方案:强>
#00000.00
01234.57
1234.57
答案 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%