我想阻止TPageControl
的后代拥有除Style
之外的tsTabs
属性。
乍一看,我试图覆盖SetStyle
,但它在基类中被声明为私有。有人有想法吗?
答案 0 :(得分:3)
TPageControl
本身并不支持您所要求的内容。要完成你的要求,你必须要么:
让您的组件使用新的getter / setter方法重新声明Style
属性,然后让setter退出而不做任何事情。但是,如果组件的用户确实想要访问它,那么在技术上仍然可以在运行时访问继承的Style
属性。
从TCustomTabControl
而不是TPageControl
派生您的组件,并重新实现TPageControl
所做的所有事情,但不会宣传受保护的Style
属性。但是,如果组件的用户确实想要访问它,那么在技术上仍然可以在运行时访问继承的Style
属性。
让您的组件覆盖虚拟CreateParams()
方法,并在TCS_TABS
字段中强制TCreateParams.Style
窗口样式。 Style
属性仍将具有用户分配的任何值(这也将影响TabPosition
属性的行为),但至少底层窗口将始终表现为tsTabs
样式正在使用。
使用绕行库在运行时直接挂钩TCustomTabControl.SetStyle()
并使其返回而不做任何事情。