【问题标题】:Firemonkey style inheritance?Firemonkey风格的继承?
【发布时间】:2013-04-30 17:03:49
【问题描述】:

我刚开始使用 Firemonkey,在样式的使用方面还有很多东西要学,但是有些东西我想不通。

我已经学会了如何simulate a TListView 使用样式。所以我制作了一种样式,可以为列表项添加进度条,我们称之为 ListItemStyleProgressBar。

现在我想在我的表单上有两个 ListView 实例,一个 TListItem 的字体是红色的,一个是蓝色的。如何做到这一点?我可以制作从 ListItemStyleProgressBar (ListItemStyleProgressBarRed) '继承' 的样式吗?

除此之外,我希望能够为这两个列表视图实例设置“样式”,因此有一个显示浅色背景的样式和一个显示深色背景的样式。

让我感到困惑的是,似乎需要样式来添加功能(将 TProgressBar 添加到 TListItem)以及为此添加的功能进行样式设置。

谁能告诉我这里缺少什么?

【问题讨论】:

    标签: delphi delphi-xe2 firemonkey


    【解决方案1】:

    没有。样式没有继承机制。有两种方法可以解决您的问题:

    1) 创建两个(或更多)非常相似的样式来代表每个“外观”。 2) 在运行时使用 OnApplyStyleLookup 方法进行更改,或者,如果您有自定义控件,则通过覆盖 ApplyStyle 方法进行更改。

    在后一种情况下,您需要这样的东西:

    procedure TMyClass.ApplyStyle;
    var O: TFMXObject;
    begin
      O := FindStyleResource('background');
      if O is TRectangle then
        TRectangle(O).Fill.Color := claRed;
    end;
    

    【讨论】:

    • 嗨,迈克,感谢您的回复。是否有可能扭转它,对 TListItem 运行时进行更改并使用样式来设置它们的样式?
    • 我不确定你在问什么。
    • 我的意思是是否有可能对 TListItem 进行更改,我现在通过样式和代码进行了更改。所以也许可以继承 TListItem ,在它的构造函数中创建进度条本身。然后通过样式设置这个扩展的 TListItem 的样式。
    • 你可以通过代码为所欲为。我不确定我是否看到通过代码创建控件的一部分而不是简单地将它们添加到样式中的优势。
    猜你喜欢
    • 2016-08-31
    • 1970-01-01
    • 2013-07-11
    • 2020-01-17
    • 1970-01-01
    • 1970-01-01
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多