E2362无法访问受保护的符号TControl.颜色我该如何绕过它



为什么Delphi 10 Architect会出现此错误?

我想通过OnMouseMove事件更改形状的Color属性。但它给了我一个错误:

E2362无法访问受保护的符号TControl.Color

有什么办法吗?

var
TrafficLights: TTrafficLights;
implementation
{$R *.dfm}
procedure TTrafficLights.btn1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
shp1.Color := clRed;
end;
procedure TTrafficLights.btn2MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
shp2.Color := clYellow;
end;
procedure TTrafficLights.btn3MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
shp3.Color := clGreen;
end;                                                                                             ```

这个错误不言自明。Color属性是TControl基类中的protected。派生组件决定是否根据需要将属性提升为publicpublished

举个例子,TShape不会将Color提升为公共访问。您需要使用Brush.Color属性,例如:

shp1.Brush.Color := clRed;
shp2.Brush.Color := clYellow;
shp3.Brush.Color := clGreen;

最新更新