TPageControl:如何防止更改Style属性

时间:2016-10-19 13:48:48

标签: delphi vcl

我想阻止TPageControl的后代拥有除Style之外的tsTabs属性。

乍一看,我试图覆盖SetStyle,但它在基类中被声明为私有。有人有想法吗?

1 个答案:

答案 0 :(得分:3)

TPageControl本身并不支持您所要求的内容。要完成你的要求,你必须要么:

  1. 让您的组件使用新的getter / setter方法重新声明Style属性,然后让setter退出而不做任何事情。但是,如果组件的用户确实想要访问它,那么在技术上仍然可以在运行时访问继承的Style属性。

  2. TCustomTabControl而不是TPageControl派生您的组件,并重新实现TPageControl所做的所有事情,但不会宣传受保护的Style属性。但是,如果组件的用户确实想要访问它,那么在技术上仍然可以在运行时访问继承的Style属性。

  3. 让您的组件覆盖虚拟CreateParams()方法,并在TCS_TABS字段中强制TCreateParams.Style窗口样式。 Style属性仍将具有用户分配的任何值(这也将影响TabPosition属性的行为),但至少底层窗口将始终表现为tsTabs样式正在使用。

  4. 使用绕行库在运行时直接挂钩TCustomTabControl.SetStyle()并使其返回而不做任何事情。