Delphi组件中的公共类型

时间:2016-04-12 23:55:32

标签: delphi firemonkey delphi-10-seattle

我已经将FMX组件子类化,我想覆盖(虚拟)受保护的过程。

此过程有许多参数,在组件的类中声明为“公共类型”。

当我尝试覆盖该过程时,我收到一个错误,即虽然我的组件是原始类型的子类,但未声明其中一个类型。我不应该能够访问它吗?

该类的定义如下:

TTabControl = class (...)
public type
  TTabBarButton = (Left, Right)
  TTabBarButtons = set of TTabButton;
  ....
protected
  procedure DoUpdate(const TabBarButtons: TTabBarButtons; ....); virtual;
  ...
end;

现在,我已经将这个类子类化,并希望覆盖DoUpdate。

TMyClass = class (TTabControl)
protected
  procedure DoUpdate(const TabBarButtons: TTabBarButtons; ....); override;  
  ....
end;

编译器抱怨我的类中没有定义TTabBarButtons。如果我在我的类中重新定义TTabBarButtons作为公共类型,那么它说定义与基类不同。

你能帮我解决这个问题吗?

非常感谢。

1 个答案:

答案 0 :(得分:3)

这对我有用:

TMyClass = class (TTabControl)
protected
  procedure DoUpdate(const TabBarButtons: TTabControl.TTabBarButtons; ....); override;  
  ....
end;

还有其他参数需要做同样的事情;当您开始跟踪所有这些类型和声明时,就会产生乐趣。祝好运。 : - )