该Text
属性旨在用于获取 DataAware 控件中正在编辑的字段的文本表示,与DisplayText
为您提供字符串以向用户表示值的属性相反(它可能包含标点符号或其他普通装饰价值)。
包含当字段处于编辑模式时在数据感知控件中显示的字符串
一个典型的例子是Currency
属性设置为的 TFloatField True
。为DisplayText
您提供一个字符串,其数字包含逗号(如果需要)、小数分隔符和货币符号。该Text
属性为您提供了一个不带逗号或货币符号的字符串。
begin
MyFloatField.Currency := True;
MyFloatField.AsFloat := 1234.56;
A := MyFloatField.Text; //'1234.56'
B := MyFloatField.DisplayText; //'$1,234.56', depends on your locale
end;
以上两个属性都可以自定义编写OnGetText
事件处理程序,您可以在其中编写自定义逻辑将值转换为字符串表示形式。该DisplayText
参数指示想要的字符串是否用于表示编辑值。
另一方面,该AsString
属性在基本数据类型和字符串之间使用更简单的转换。每个 TField 后代使用 RTL 中的函数实现虚拟 GetAsString 方法来执行该表示。在 TFloatField 示例之后,此类调用FloatToStr()
就是为了这个目的。
综上所述,您的问题的答案是:如果没有 OnGetText 事件处理程序,则AsString
返回与属性相同的字符串Text
,但如果有事件处理程序或非标准 TField 后代,则可能会有所不同。
我不知道什么更适合您,因为它取决于返回值的预期用途,但如果您使用它在 UI 中向用户显示值(如您的代码示例),我建议您使用 DisplayText 属性。