' Text'的默认值是什么? TField.OnGetText中的参数

时间:2017-05-11 10:51:55

标签: delphi

我有一个附加到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处理程序没有代码时,该字段没有显示任何内容,即该过程的主体为空。

1 个答案:

答案 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