TPageControl:如何防止更改样式 属性
TPageControl: how to prevent changing Style property
我想防止 TPageControl
的后代拥有 Style
属性 除了 tsTabs
。
乍一看我试图覆盖 SetStyle
,但它在基 class 中被声明为私有。有人有想法吗?
TPageControl
本身不支持您的要求。要完成您的要求,您必须:
让您的组件使用新的 getter/setter 方法重新声明 Style
属性,然后让 setter 退出而不执行任何操作。但是,如果组件的用户确实想要访问继承的 Style
属性,技术上来说在运行时仍然可以访问它。
从 TCustomTabControl
而不是 TPageControl
派生您的组件,并重新实现 TPageControl
所做的一切,但不提升受保护的 Style
属性。但是,如果组件的用户确实想要访问继承的 Style
属性,技术上来说在运行时仍然可以访问它。
让您的组件覆盖虚拟 CreateParams()
方法并在 TCreateParams.Style
字段中强制使用 TCS_TABS
window 样式。 Style
属性 仍将具有用户分配的任何值(这也会影响 TabPosition
属性 的行为),但至少底层 window将始终表现得好像正在使用 tsTabs
样式。
直接在运行时使用detouring库hook TCustomTabControl.SetStyle()
,什么都不做就return
我想防止 TPageControl
的后代拥有 Style
属性 除了 tsTabs
。
乍一看我试图覆盖 SetStyle
,但它在基 class 中被声明为私有。有人有想法吗?
TPageControl
本身不支持您的要求。要完成您的要求,您必须:
让您的组件使用新的 getter/setter 方法重新声明
Style
属性,然后让 setter 退出而不执行任何操作。但是,如果组件的用户确实想要访问继承的Style
属性,技术上来说在运行时仍然可以访问它。从
TCustomTabControl
而不是TPageControl
派生您的组件,并重新实现TPageControl
所做的一切,但不提升受保护的Style
属性。但是,如果组件的用户确实想要访问继承的Style
属性,技术上来说在运行时仍然可以访问它。让您的组件覆盖虚拟
CreateParams()
方法并在TCreateParams.Style
字段中强制使用TCS_TABS
window 样式。Style
属性 仍将具有用户分配的任何值(这也会影响TabPosition
属性 的行为),但至少底层 window将始终表现得好像正在使用tsTabs
样式。直接在运行时使用detouring库hook
TCustomTabControl.SetStyle()
,什么都不做就return