Delphi - 更改活动页面的选项卡颜色并在单击另一个选项卡后将其重置

问题描述

所以在我编写的程序中,我使用了一个带有多个标签页的 TPageControl 组件。我想更改当前是 PageControl 上的活动页面的工作表的选项卡的颜色,然后在单击另一个页面后重置颜色(然后该选项卡将更改,因为它是活动页面等等。 ..),使导航页面控件更容易一些。但我不知道该怎么做?我确实尝试过使用页面控件的 OnChange 过程和一些类似的代码(我知道这是非常错误的,但我的想法和谷歌搜索都用完了。无论如何它都没有用。):

with pgcTabs.ActivePage do
begin 
brush.color:=clBlue;
font.color:=clWhite;
end; 

在此先感谢您的帮助!
亲切的问候
PrimeBeat

解决方法

你不能。除了使用 TTabSheet.Highlighted 之外,您无法控制标签的显示方式。

或者您必须像大多数其他控件一样完全自己绘制它:将 TPageControl.OwnerDraw 设置为 true,然后使用 OnDrawTab 事件绘制您想要的任何内容。它应该与 TTabControl.OnDrawTab (see answer) 相同。自己绘制所有东西的缺点(双关语)通常是所有额外的工作要做:检查尺寸、解释加速键、尊重系统颜色和设置(即 LTR)...

在我看来,与默认情况下控件如何以其所有优点和功能进行绘制相比,“仅添加颜色”几乎没有价值。考虑色盲:这些人可能宁愿有问题。