我刚刚看到他们使用过的一些代码(D5)......
aStr:=tblAcct.FieldByName('Name').Text;
Run Code Online (Sandbox Code Playgroud)
它似乎工作正常,但我一直用...
aStr:=tblAcct.FieldByName('Name').AsString;
Run Code Online (Sandbox Code Playgroud)
我在加载TMemo时使用了两者,但似乎没有区别.
aMemo.Lines.Text:=tblAcct.FieldByName('History').Text;
aMemo.Lines.Text:=tblAcct.FieldByName('History').AsString;
Run Code Online (Sandbox Code Playgroud)
有什么理由我应该使用一个而不是另一个?如果是这样,哪一个?
实际上对于TMemo,我通常使用......
aMemo.Lines.Assign(tblAcct.FieldByName('History'))
Run Code Online (Sandbox Code Playgroud)
这似乎也很好.
谢谢
jac*_*ate 20
的Text
属性是指被用来获得一个字段的文本表示在DataAware控制正在编辑,与此相反DisplayText
,让你一个串来表示的值的用户属性(它可以包含标点或其他装饰到平原值).
包含在字段处于编辑模式时要在数据感知控件中显示的字符串
典型示例是TFloatField,其Currency
属性设置为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;
Run Code Online (Sandbox Code Playgroud)
上述两个属性都可以自定义编写OnGetText
事件处理程序,您可以在其中编写自定义逻辑以将值转换为字符串表示形式.该DisplayText
参数指示所需字符串是否表示要编辑的值.
另一方面,该AsString
属性在基本数据类型和字符串之间使用更简单的转换.每个TField后代使用RTL中的函数实现虚拟GetAsString方法以执行该表示.在TFloatField示例之后,此类调用FloatToStr()
此目的.
所有这些说,你的问题的答案是:如果没有OnGetText事件处理程序,则AsString
返回与Text
属性相同的字符串,但如果有事件处理程序或非标准TField后代,则可能会有所不同.
我不知道什么更适合你,因为它取决于返回值的预期用途,但如果你用它来在UI中显示用户的值(作为你的代码示例),我建议您使用DisplayText属性.