【问题标题】:Public Types in Delphi ComponentsDelphi 组件中的公共类型
【发布时间】:2016-08-03 19:48:32
【问题描述】:

我对 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 重新定义为公共类型,那么它表示定义与基类不同。

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

非常感谢。

【问题讨论】:

    标签: delphi firemonkey delphi-10-seattle


    【解决方案1】:

    这对我有用:

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

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

    【讨论】:

    • 谢谢肯。那行得通。有趣的是,并非所有参数都需要对 TTabControl 的引用;我真的不知道为什么,但它不起作用。谢谢。
    猜你喜欢
    • 2020-03-18
    • 1970-01-01
    • 2019-08-06
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多