首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在livebindings中使用格式

在livebindings中使用格式
EN

Stack Overflow用户
提问于 2013-09-14 11:54:29
回答 3查看 8.1K关注 0票数 2

我试图使用LiveBindings格式化一个数字,以便在TEdit中显示在FireMonkey窗体上。

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

我可以对输出“硬编码”:

代码语言:javascript
复制
Format("Hello", %s)

它正在工作,但我无法确定要使用什么样的格式字符串。如果我尝试一个标准格式字符串,例如,

代码语言:javascript
复制
Format("%.2f", %s)

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

实际上,每当我在格式字符串中包含%符号时,我就会得到一个错误,因此我猜测格式采用不同类型的参数,但是我找不到任何文档来说明正确的格式字符串是什么。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-09-16 16:01:19

参数以%s的形式传递到CustomFormat。绑定系统在将数据传递到计算程序之前准备该参数。因此,CustomFormat字符串中的任何其他%符号都会出现错误。

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

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

代码语言:javascript
复制
Format('%%.2f', %s)

它被解析为

代码语言:javascript
复制
Format('%.2f', 67.66666)

然后分析到

代码语言:javascript
复制
67.67

为了展示。

如果你想在最终的输出中包含一个文字%,你需要放一个象限%。

代码语言:javascript
复制
Format('%%.2f%%%%', %s)

变成了

代码语言:javascript
复制
Format('%.2f%%', 67.6666)

并显示为

代码语言:javascript
复制
67.67%

注意:普通格式函数接受最后一个参数,它是一个值数组。绑定系统中的Format方法接受一个可变长度的参数列表。

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

票数 2
EN

Stack Overflow用户

发布于 2013-09-16 02:41:51

不能在Format('%.2f',[%s])中使用LiveBindings -> CustomFormat

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

代码语言:javascript
复制
d : double;
s : string;
...
d := 1234.5678;
s:=Format('%.2f',[d]);

Format()是将int、十进制、双浮点转换为字符串

所有其他方面都会给出一个错误:invalid argument

例如,有效是

代码语言:javascript
复制
TLinkControlToField1 -> CustomFormat : "Double : "+UpperCase(%s)

将给你编辑1.文本

代码语言:javascript
复制
Double : 1234.5678

好的,我们知道大写()对于'1234.5678‘没有影响。

只显示(%s)是字符串。

解决方案:

  • 设置为TFloatField -> DisplayFormat #00000.00 圆环和显示01234.57
  • 检查TFloatField ->货币 圆环和显示1234.57
  • 在这里使用组件外观 LiveBindings in XE3:格式化您的字段

票数 3
EN

Stack Overflow用户

发布于 2021-02-19 14:40:40

输入67.6666

自定义格式:ToStr(格式(%%.2F,值))+‘%%’

产出67.00 %

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18801484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档