2011-02-14 68 views
3

我有一个应用程序,用户可以设置如何显示值。用户输入格式化字符串,组件使用FormatFloat显示值。德尔福FormatFloat和格式函数

但是现在我们正在使用一个新的第三方组件,它使用Format函数格式化值,当然我们的用户格式中没有一个格式工作,格式& FormatFloat函数使用不同的语法。

因此,有谁知道两种方式之间的转换?或者也许有人有代码来做到这一点?

感谢,

AJ

回答

3

尽管FormatFloat的格式字符串可以或多或少地转换为Format格式字符串,但您可能只能得到正值的真正相似性。 Format方法根本无法提供足够的灵活性来整合FormatFloat方法提供的格式字符串的功能和精细控制。

例如,FormatFloat方法允许三种不同的格式用于正值,负值和零值。而且,FormatFloat格式字符串允许字符串文字,例如'#,## 0.00 ;;零'; (这意味着零值被打印为“零”)。

要使用Format函数获得类似的内容,您自己需要通过格式字符串来完成FormatFloat为您所做的所有工作。

所以,虽然我不同意改变第三方控件的源代码,因为我反对更改vcl源代码,但我与David一起:找到一种方法让第三方控件使用FormatFloat函数。最好通过一个自定义后代或通过一个插入器类(也称为拦截器类),但如果失败了,通过一切手段改变第三方控件的来源。只要确保正确标记已更改的部分,以便在切换到该控件的新版本时可以轻松地对其进行重做。

+0

+1我同意你对改变第三方来源的看法;实际上它总是必须完成。修正控制是您在这项工作中的朋友(因为它在许多其他场合)。 – 2011-02-14 15:03:56

2

远远地占据了最简单的解决方法是将采取第三方组件的源(你应该只考虑使用附带源第三方德尔福组件)并对其进行修改致电FormatFloat而不是Format