2016-04-12 10 views
4

FMXコンポーネントをサブクラス化し、(仮想)保護されたプロシージャをオーバーライドしたいと思います。Delphiコンポーネントのパブリックタイプ

この手順には、コンポーネントのクラスで「パブリックタイプ」として宣言されている多くのパラメータがあります。

プロシージャをオーバーライドしようとすると、コンポーネントが元のサブクラスをサブクラス化しているにもかかわらず、型の1つが宣言されていないというエラーが発生します。私はそれにアクセスできないはずですか?クラスは次のように定義されて

:今

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をパブリック・タイプとして再定義すると、定義は基本クラスとは異なります。

これで私を助けてもらえますか?

ありがとうございます。

答えて

3

これが私の作品:

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

あなたと同じことを行う必要があります他のパラメータがあります。これらのタイプと宣言をすべて追跡し始めると、楽しいことが起こります。がんばろう。 :-)

+0

ありがとうKen。それはうまくいった。興味深いのは、TTabControlへの参照がすべてのパラメータで必要というわけではないということです。私は本当に理由は分かっていませんが、うまくいきません。ありがとう。 –

関連する問題