【问题标题】:How to change the TTabItem's style如何更改 TTabItem 的样式
【发布时间】:2014-06-20 20:01:21
【问题描述】:

请看下图:

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

【问题讨论】:

  • 您需要通过 StyleBook 编辑选项卡的默认样式。 docwiki.embarcadero.com/RADStudio/XE6/en/…
  • @PeterVonča,这应该是一个答案吗?
  • @Johan,我无法访问 XE6 或 FMX 移动设备,因此我无法完全回答他的问题,至少在识别负责选项卡项目外观的资源样式项目的名称方面在样书中去。如果你可以继续,我会在之后删除我的评论。
  • @PeterVonča,正如你所说,我可以加载样式文件(AndroidLight.fsf),但我无法确定哪个资源样式项负责标签项的外观。

标签: delphi firemonkey delphi-xe6


【解决方案1】:

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

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

How to style buttons in Firemonkey with Delphi XE4

【讨论】:

    【解决方案2】:

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

    当然,您可以(并且必须)使用TStyleBookStyleLookup 属性来设置控件的样式,但是您不能轻易复制控件的默认样式,因为移动表单设计器没有Edit custom style 菜单选项,因此您必须完全重新创建样式。幸运的是,有一个解决方法。首先切换到您要编辑样式的任何平台(Android,iOS 6/7),然后在文本模式(Alt+F12)中打开dfm 设置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风格应该保存在你的Delphi安装的bin\ios下。如何提取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 部分下添加一个矩形,将其定位到底部,在调整位置和大小之后,您应该会得到想要的结果。

    【讨论】:

    • 我尝试了 DesignerMobile 技巧,但它会将 Windows 样式加载到样式簿中。
    • 您使用的是 Delphi XE5 吗?我没有尝试其他版本。你是如何切换回设计模式的?使用快捷方式?
    • 使用 XE6:Designer -> 文本模式 -> 编辑 DesignerMobile -> 表单模式 -> 右键单击​​/编辑自定义样式 -> 文本模式 -> 编辑 DesignerMobile = True -> 表单模式。
    • DesignerMobile 似乎同时切换了表单设计器和可用样式。
    • 我也会尝试在 XE6 上进行测试并告诉你,我希望他们没有“修复”这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-11
    • 1970-01-01
    • 1970-01-01
    • 2023-02-06
    • 2021-07-13
    • 2014-09-23
    • 2014-07-13
    相关资源
    最近更新 更多