我有一个附加到TField.OnGetText
字段事件的程序,Score
如下所示:
procedure TMyForm.GetScoreText(Sender: TField; var Text: string; DisplayText: Boolean);
begin
if StrToInt(Sender.AsString) >= 80 and StrToInt(Sender.AsString) <= 100 then
Text := 'Great!';
else if StrToInt(Sender.AsString) >= 60 and StrToInt(Sender.AsString) < 80 then
Text := 'Good';
end;
从OnGetText
文档中,我知道当没有OnGetText
定义处理程序时,Text
字段的属性是名称作为AsString
属性。但我的问题是,var
参数Text
在那里获得的值是OnGetText
定义的,但Text
为字段的当前值定义的。就我而言,Text
当字段的值Score
小于 60时,会得到什么值?是Null
,还是空字符串,还是其他什么?我需要明确地知道它,因为有一些逻辑取决于所显示的值。
我从这篇SO post中了解到,当OnGetText
处理程序没有代码时,该字段没有显示任何内容,即程序主体为空。
当一个OnGetText
赋值并且在Text
参数中没有返回时,结果是一个空字符串。
看Db
源码:
function TField.GetDisplayText: string;
begin
Result := '';
if Assigned(FOnGetText) then
FOnGetText(Self, Result, True) else
GetText(Result, True);
end;
在Result
最初被设置为一个空字符串,并把它传递给FOnGetText
它是否被分配。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句