親の published プロパティを子クラスで隠蔽する
|
Object Pascal では、クラスの継承時に親クラスで指定されたアクセス指定子よりも厳しいアクセス指定子をメンバに指定しても無視されてしまいます。従って、親クラスで public に指定されたメンバを子クラスで protected にするようなことは出来ません。
これは、published も同じで、一度公開されたものを元に戻すことはできないのですが、単に「オブジェクト・インスペクタに表示させない」だけならば、「読み込み専用のプロパティ」として再宣言することで、オブジェクトインスペクタに表示しないようにすることができます。
例:AutoScrollプロパティを読み込み専用にする。
THogeScrollBox = class(TScrollBox)
private
function GetAutoScroll: Boolean;
published
property AutoScroll: Boolean read GetAutoScroll;
end;
function THogeScrollBox.GetAutoScroll: Boolean;
begin
Result := inherited AutoScroll;
end;
※当然、イベントも同じ方法で隠すことが出来ます。 |
|