我有一个附加到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
documentation开始,我知道当没有定义OnGetText
处理程序时,该字段的Text
属性名称为AsString
属性。但我的问题是,var
参数Text
获得了什么价值OnGetText
已定义,但Text
是为该字段的当前值定义的。在我的情况下,当Text
字段的值小于60时,Score
得到的值是多少?它是Null
,还是空字符串,还是其他什么?我需要明确地知道它,因为有一些逻辑取决于显示的值。
我从这个SO post中了解到,当OnGetText
处理程序没有代码时,该字段没有显示任何内容,即该过程的主体为空。
答案 0 :(得分:5)
如果在OnGetText
参数中分配了Text
且没有返回,则结果为空字符串。
查看Db
来源:
function TField.GetDisplayText: string;
begin
Result := '';
if Assigned(FOnGetText) then
FOnGetText(Self, Result, True) else
GetText(Result, True);
end;
Result
最初设置为空字符串,如果已分配,则将其传递给FOnGetText
。