TPageControl:如何防止更改样式 属性

TPageControl: how to prevent changing Style property

我想防止 TPageControl 的后代拥有 Style 属性 除了 tsTabs

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

TPageControl 本身不支持您的要求。要完成您的要求,您必须:

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

  2. TCustomTabControl 而不是 TPageControl 派生您的组件,并重新实现 TPageControl 所做的一切,但不提升受保护的 Style 属性。但是,如果组件的用户确实想要访问继承的 Style 属性,技术上来说在运行时仍然可以访问它。

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

  4. 直接在运行时使用detouring库hook TCustomTabControl.SetStyle(),什么都不做就return