Public 类型 Delphi 组件

Public Types in Delphi Components

我已经子class了一个 FMX 组件,我想覆盖一个(虚拟)受保护的过程。

这个程序有一些参数,在组件的class中声明为"public type"。

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

class的定义是这样的:

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

现在,我已经子class编辑了这个 class 并且想覆盖 DoUpdate。

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

编译器抱怨我的 class 中的 TTabBarButtons 没有定义。如果我在我的 class 中将 TTabBarButtons 重新定义为 public 类型,那么它会说该定义不同于基础 class.

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

非常感谢。

这对我有用:

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

您还需要使用其他参数来执行相同的操作;当您开始跟踪所有这些类型和声明时,乐趣就来了。祝你好运。 :-)