【问题标题】:E2362 Cannot access protected symbol TControl.Color how do I get around that?E2362 无法访问受保护的符号 TControl.Color 我该如何解决?
【发布时间】:2021-12-27 11:35:27
【问题描述】:

为什么 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;                                                                                             ```

【问题讨论】:

    标签: delphi vcl


    【解决方案1】:

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

    例如,TShape 不会宣传Color 以供公众访问。您需要改用Brush.Color 属性,例如:

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

    【讨论】:

      猜你喜欢
      • 2020-02-29
      • 2015-01-30
      • 1970-01-01
      • 2022-01-06
      • 2014-12-29
      • 1970-01-01
      • 1970-01-01
      • 2011-01-02
      • 1970-01-01
      相关资源
      最近更新 更多