首页 > 解决方案 > E2362 无法访问受保护的符号 TControl.Color 我该如何解决?

问题描述

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

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

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;                                                                                             ```

标签: delphivcl

解决方案


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

举个例子,TShape不促进Color公众访问。您需要改用该Brush.Color属性,例如:

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

推荐阅读