以下是导致错误的代码:
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属性。
答案 0 :(得分:0)
如果您正在编写基于VCL的应用程序,则错误消息非常明确 - Text
受TLabel
保护(未发布),Caption
发布lblFirstName.Caption := query.FieldByName('First Name').AsString;
属性代替。更改您的代码以使用该属性。
TLabel
为了将来参考,可以在对象检查器中看到这一点(显示Caption
具有已发布的Text
属性而不是lblFirstName.
属性)并使用Code Insight在IDE中(类型Text
并按 Ctrl + 空格),它不提供Caption
属性但显示TEdit
如果您滚动选项,则属性。
(另外,作为一般经验法则(至少在VCL中):如果控件接受用户输入(用户可以输入),如TMemo
和Text
,它会发布一个TLabel
属性;如果不是(例如TButton
或Caption
),则会发布TLabel
属性。由于Caption
不接受用户输入,因此它会发布Text
而非{{1}}。)