如何改变TTabItem的风格

时间:2014-05-04 13:33:57

标签: delphi firemonkey delphi-xe6

请看下面的图片:

TTabItem of TTabControl

我需要在TTabItem上修改蓝条的颜色。但我没有找到任何可以修改的地方。 哪些属性或样式可以修改它?

2 个答案:

答案 0 :(得分:0)

更改tabitems的外观,您可以设计自定义样式。使用TStyleBook组件或将样式加载到StyleBook并在布局树上修改tabitemstyle。

您可以观看此电影,了解如何管理样式属性。

How to style buttons in Firemonkey with Delphi XE4

答案 1 :(得分:0)

Sylwester Wojnar的答案是正确的,适用于桌面应用程序,但在移动设备上,这变得更复杂(至少在XE5上,不确定XE6是否已修复)。

当然,您可以(并且必须)使用TStyleBookStyleLookup属性来设置控件的样式,但是您无法轻松复制控件的默认样式,因为移动设备设计器没有{ {1}}菜单选项,因此您必须完全重新创建样式。幸运的是有一个解决方法。首先切换到您想要编辑样式的任何平台(Android,iOS 6/7),然后在文本模式下打开Edit custom style(Alt + F12),再次将dfm设置为设计模式,然后“我会看到你仍处于移动风格,但使用经典设计师,然后右键单击所需的控件并选择DesignerMobile = False

如果您计划在多个平台上运行您的应用,您可以在表单中添加多个Edit custom/default style并为每个平台重复此操作,以便为您需要的所有平台获取不同且正确的样式,然后您需要在形式建设:

TStyleBooks

更新:这仅适用于Delphi XE5并在XE6中“修复”。

更新2: 还有另一种解决方案可能也适用于XE6。

首先,您需要获取默认平台样式,iOS样式应保存在Delphi安装的procedure TForm1.AfterConstruction; begin inherited; {$IF Defined(MSWINDOWS)} StyleBook := StyleBookWindows; {$ELSEIF Defined(MACOS) AND NOT Defined(IOS)} // MAC OS shares the same as Windows both default styles appear to be the same StyleBook := StyleBookWindows; {$ELSEIF Defined(ANDROID)} StyleBook := StyleBookAndoird; {$ELSEIF Defined(IOS)} if (TOSVersion.Check(7)) then StyleBook := StyleBookIOS7 else StyleBook := StyleBookIOS6; {$ENDIF} end; 下。如何提取Android样式阅读http://delphihaven.wordpress.com/2013/12/31/inspecting-platform-styles-redux/

然后将bin\ios添加到您的表单,双击它并单击TStyleBook(不加载,因为这将无法加载),单击Add并再次重新打开该样式(以确保它在IDE中正确地重新创建。现在点击Apply and close并将其保存在您喜欢的任何位置。这将把它保存在文本中,以便您可以手动编辑它。查找Save...并删除所有其他样式,使其如下所示:

tabitemstyle

现在再次编辑样式簿并单击object TStyleContainer object TLayout StyleName = 'tabitemstyle' DesignVisible = False ... end end 重新打开样式簿,然后单击Clear All并选择刚编辑的样式。再次重新打开样式书,现在应该加载样式,重命名它以便Delphi不会将它用于所有Add。使用您刚输入的名称选择控件中的样式,并确保在表单中选择样式簿。

编辑样式:

TTabItems的默认样式使用图像绘制底部蓝色条。修改图像非常困难,因为它是一个多分辨率图像,更简单的方法是在样式中添加一个矩形。因此,在样式位置的TTabItem部分下方添加一个矩形到底部,经过一些摆弄位置和大小后,您应该得到所需的结果。