如何在Delphi中更改TabControl中活动选项卡的颜色?

7
如何更改FireMonkey中TabControl中活动选项卡的颜色,如下所示?

enter image description here


我离开了电脑,但我相信你想通过修改样式来完成它。 - Jim McKeeth
1
到目前为止,我仅能够通过正确访问每个选项卡中的“自定义样式…”并在背景上插入具有属性align = ClientFill.Color = MyColor的“矩形”控件来更改颜色。我不知道这是否是您所说的...如果您记得其他情况,请告诉我。感谢您的提示。 - wBB
1
您可以在 TStyleBook 中修改样式,以改变所选选项卡的外观。 - Jim McKeeth
@JimMcKeeth:你建议的方法是可以的,但我没有得到我期望的视觉效果,所以我放弃使用TTabControl选项卡并创建了自己的选项卡。谢谢! - wBB
1个回答

5
有两种方法可以实现这一点。
1) 第一种方法是您可以从Style Designer中的TStyleBook创建CustomStyle,用于TabControl。然后,您可以添加任何您想要在自定义设计中使用的内容(TRectangle建议用于许多形状和颜色)。
2) 我更喜欢使用第二种方式。将TTabControl的TabPosition设置为None,然后在表单中添加TGridPanelLayout以添加选项卡。之后,将您的TGridPanelLayout的列数设置为您的选项卡数量。
现在您需要知道每个选项卡框应该是相同的。为第一列放置一个TRectangle,然后将Align设置为Client(所有颜色和内部组件都取决于您的选择)。
确保您的TRectangle组件的HitTest参数为true,内部组件的HitTest参数为false。
您还可以通过OnClick事件处理您的选项卡选择。为每个标签的TRectangle设置一个标记,然后将所有选项卡连接到相同的OnClick事件。然后获取Sender的Tag并根据其设置您的TabControl1.ActiveTab。

2
我使用了你的一些技巧,但是我没有得到我期望的视觉效果,所以我放弃使用TTabControl选项卡并创建了自己的选项卡。即便如此,你的答案仍然有效,其他人可以用它来解决相同的问题。谢谢! - wBB
2
我总是使用这个解决方案来处理菜单、分页和仪表板表单。希望它能够起到作用并对你有所帮助。此外,你可以使用 TGestureManager 来处理选项卡的切换,它可以帮助你轻松地滑动选项卡。除了我的回答之外,如果你需要在 TRectangle 项目中使用 png 图片,可以使用 TPicture,并且可以使用 TLabel - Abdullah Ilgaz
您无法通过自定义样式编辑标签页标题颜色,因为只有主体部分是可见的,您也无法通过设计师(样式手册)在标题部分放置矩形。 - undefined
1
@user30478 或许你可以提供新的解决方案。那个方案在我写下它的时候是有效的,而那已经是5年前的事了。 - undefined
@AbdullahIlgaz 我只是想要验证/否定第一点。你的第二种方法应该有效。 - undefined
@user30478 谢谢你对第二种方法的评论。也许下次你可以一次性提出你的想法。如果你不同意,可以展示正确的方法。我意识到我的第二种方式仍然有效。因此,你应该同时提到两种方法,而不仅仅说“第一种是错误的”。如果新人看到你的留言,他们可能会理解你的想法。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接