为什么E2362无法访问受保护的符号TControl.Text?

时间:2015-12-23 23:59:44

标签: delphi delphi-xe8

以下是导致错误的代码:

procedure TfrmQuoteTemp.showData;
 begin
  lblFirstName.Text := query.FieldByName('First Name').AsString;
  lblLastName.Text := query.FieldByName('Last Name').AsString;
  lblAddress.Text := query.FieldByName('Address').AsString;
  lblTown.Text := query.FieldByName('Town').AsString;
  lblCounty.Text := query.FieldByName('County').AsString;
  lblPostcode.Text := query.FieldByName('Postcode').AsString;
  lblTelNo.Text := query.FieldByName('TelNo').AsString;
 end;

此错误仅在Tlabel中发生,我根本无法更改其Text属性。

1 个答案:

答案 0 :(得分:0)

如果您正在编写基于VCL的应用程序,则错误消息非常明确 - TextTLabel保护(未发布),Caption发布lblFirstName.Caption := query.FieldByName('First Name').AsString; 属性代替。更改您的代码以使用该属性。

TLabel

为了将来参考,可以在对象检查器中看到这一点(显示Caption具有已发布的Text属性而不是lblFirstName.属性)并使用Code Insight在IDE中(类型Text并按 Ctrl + 空格),它不提供Caption属性但显示TEdit如果您滚动选项,则属性。

(另外,作为一般经验法则(至少在VCL中):如果控件接受用户输入(用户可以输入),如TMemoText,它会发布一个TLabel属性;如果不是(例如TButtonCaption),则会发布TLabel属性。由于Caption不接受用户输入,因此它会发布Text而非{{1}}。)