• 0
Andrey Efimov

Редактирование стиля, как добавить "TStyleObject", "TActiveStyleObject" и т.п.?

Вопросы

Если открыть стандартный файл стиля, то можно заметить такие элементы/компоненты как "TStyleObject", "TActiveStyleObject", "TBrushObject".

Интересует вопрос: Как добавлять такие элементы в стиль?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 ответ на этот вопрос

  • 0

По умолчанию эти объекты стиля и другие не зарегистрированы в палитре инструментов.

Эти объекты используются только в стилях для:

  1. Упрощение создания стиля за счет композиции контролов для достижения наиболее часто используемых функций (смена изображений по триггеру в зависимости от состояния контрола  - кнопка с тремя состояниями, Текст с тенью)
  2. Увеличения производительности работы стиля за счет композиции контролов.
  3. Уменьшение размера стиля за счет повторного использования одного исходного изображения в однотипных контролах (TButton, TSpeedButton и тд). То есть вместо загрузки по отдельности каждого изображения в стиль каждого контрола, можно использовать изображения по ссылке.

Чтобы их использовать, нужно их зарегистрировать в среде IDE RAD Studio.

Это делает вот этот пакет: 

После установки пакета в палитре инструментов появится вкладка "Style Object", в которой будут находится все служебные стилевые объекты среды RAD Studio XE5.

 

Список добавляемых стилевых объектов: 

  1. TStyleObject - Использование изображения по ссылке на оригинал и области в этом изображении. Не загружает повторно объект.
  2. TSubImage - Использование изображения по ссылке на оригинал и области в этом изображении. Не загружает повторно объект.
  3. TActiveStyleObject - Объект для смены одного изображения на другое с указанным типом анимации и указанным триггером.
  4. TTabStyleObject - специальный объект для быстрого создания стиля вкладки TTabControl
  5. TCheckStyleObject - специальный упрощенный объект для создания стиля TCheckBox
  6. TButtonStyleObject - упрощенный объект стиля кнопки с поддержкой загрузки отдельных изображений на каждое состоянии кнопки (нормальное, фокус, под мышкой, нажатое)
  7. TSystemButtonObject - стиль системной кнопки. То же, что и TButtonStyleObject, только с дополнительным состоянием - неактивная кнопка
  8. TStyleTextObject - объект для быстрого создания стиля текст с тенью.
  9. TStyleTextAnimation - объект анимации для смены цвета и тени текста 
  10. TActiveStyleTextObject - объект стиля для создания текста с тенью и переключению цвета текста и тени на другой по анимации и триггеру.
  11. TTabStyleTextObject - объект стиля для создания вкладки с текстом для TTabControl.
  12. TButtonStyleTextObject - объект стиля для создания стиля кнопки с текстом.
  13. TActiveOpacityObject - объект для смены прозрачности контрола.
  14. TBrushObject - объект хранящий кисть TBrush
  15. TBitmapObject - объект хранящий изображение TBitmap
  16. TFontObject - хранение шрифта TFont
  17. TPathObject - хранение SVG пути TPath
  18. TColorObject - хранение цвета TAlphaColor

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.

  • Похожий контент

    • От VirusZ2D
      Доброго времени суток подскажите как получить картинку из TStyleObject  
      var   Item:TListBoxItem;   StyleObject: TStyleObject; begin   Item  := ListBox1.ItemByIndex(0);   StyleObject := TStyleObject(Item.FindStyleResource('styleobjectstyle'));   if (StyleObject <> nil) and (StyleObject is TControl) then   begin     Image1.Bitmap:= StyleObject.Source;   // Выводит изображение указанное в SourceLookUp целиком;     Image1.Bitmap := // Интересует как вывести изображение обрезанное с учетом SourceLink   end;
    • От zhukovsd
      Добрый день. Я недавно перешёл на XE7 и занимаюсь стилем для FMX-приложения.
      В ХЕ3 я использовал один спрайт со всеми состояниями всех контролов и через SubImage нарезал их на нужные кусочки для соответствующих контролов. В XE7 мне удалось реализовать стиль, к примеру, кнопки, таким же образом, но никак не выходит анимировать этот SubImage, чтобы он менялся по MouseOver / MouseDown. Свойства SourceRect, отвечающее за область на спрайте, теперь нет. Сейчас оно хранится в TSubImage.SourceLink.Links[0].SorceRect.
       
      Класс анимации ищет нужное свойство через RTTI, если задать в PropertyName "SourceLink.Links[0].SorceRect" - результата нет, потому что тот код не рассчитан на использование свойств с индексом. Если вернуть классу SourceRect через хелпер, то это тоже не поможет, потому что RTTI не знает о хелперах и не видит описанного в нём свойства.
       
      Есть ли способ анимировать TSubImage, и если нет, то каким образом можно сделать стиль, не нарезая спрайт на маленькие кусочки для TImag'ей, например?
       
      Спасибо.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу