1

Please take a look at the following picture:

TTabItem of TTabControl

I need to modify color of blue bar at the TTabItem. But I did not find any place available for modification. Which attributes or styles can modify it?

4

2 回答 2

0

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

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

如何使用 Delphi XE4 在 Firemonkey 中设置按钮样式

于 2014-05-04T20:48:38.190 回答
0

Sylwester Wojnar 的答案部分正确,并且适​​用于桌面应用程序,但在移动设备上,这变得更加复杂(至少在 XE5 上,不确定 XE6 是否解决了这个问题)。

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

如果您计划在多个平台上运行您的应用程序,您可以将多个添加TStyleBooks到您的表单中并为每个平台重复此操作以获得您需要的所有平台的不同且正确的样式,那么您需要在表单构建期间选择一个:

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;

更新:这只适用于 Delphi XE5 并且在 XE6 中是“固定的”。

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

首先你需要获取默认的平台风格,iOS风格应该保存在bin\ios你的Delphi安装下。如何提取 Android 样式请阅读http://delphihaven.wordpress.com/2013/12/31/inspecting-platform-styles-redux/

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

object TStyleContainer
  object TLayout
    StyleName = 'tabitemstyle'
    DesignVisible = False
    ...
  end
end

现在再次编辑样式书,然后单击Clear All重新打开样式书,然后单击Add并选择刚刚编辑的样式。再次重新打开样式书,现在应该加载样式,重命名它以便 Delphi 不会全部使用它TTabItems。使用您刚刚输入的名称选择控件中的样式,并确保在表单中也选择了样式书。

编辑样式:

默认样式TTabItem使用图像来绘制底部的蓝色条。修改图像确实很困难,因为它是多分辨率图像,更简单的方法是在样式中添加一个矩形。因此,在样式部分下方添加一个矩形top,将其定位到底部,在调整位置和大小之后,您应该会得到所需的结果。

于 2014-05-09T13:13:11.007 回答