2013-05-06 2 views
1

Я только что начал с Firemonkey, и все еще есть чему поучиться в отношении использования стилей, но есть кое-что, что я не могу понять.Наследие стиля Firemonkey?

Я научился simulate a TListView с использованием стилей. Поэтому я создал стиль, который добавляет индикатор выполнения в элемент списка, назовем этот ListItemStyleProgressBar.

Теперь мне бы хотелось, чтобы два экземпляра ListView в моей форме, где шрифт TListItem красный, и тот, где шрифт синего цвета. Как достичь этого? Могу ли я создать стиль, который «наследует» от ListItemStyleProgressBar (ListItemStyleProgressBarRed)?

Рядом с этим я хотел бы иметь возможность «стилизовать» эти два экземпляра списка, так что у вас есть стиль, который показывает свет назад и стиль, который показывает темную спину.

Что меня смущает, кажется, что для добавления функциональности необходимо добавить стиль (добавить TProgressBar в TListItem), а также сделать стиль для этой дополнительной функции.

Может ли кто-нибудь сказать мне, что мне здесь не хватает?

ответ

0

Нет. Для стилей нет механизма наследования. Существует два способа решить вашу проблему:

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; 
+0

Привет Майк, спасибо за Ваш ответ. Можно ли повернуть его, внести изменения в рабочую среду TListItem и использовать стили для их стилей? – MerijnB

+0

Я не уверен, что вы спрашиваете. –

+0

Что я имею в виду, можно было бы внести изменения, внесенные мной в TListItem, который я теперь делал через стили, через код. Поэтому, возможно, сделайте наследование TListItem, который сам создает индикатор выполнения в его конструкторе. А затем создайте этот расширенный TListItem через стили. – MerijnB

Смежные вопросы