Стиль заливки кнопки Firemonkey

Я использую Delphi XE3 и осваиваю стили. Я хочу изменить цвет кнопки. Я могу изменить цвет текста в порядке, но не могу найти свойство «заливка» в инспекторе стилей, возможно, из-за отсутствия TRectangle, только TSubimage и TRectAnimation для кнопки, и вся помощь, которую я могу найти, относится к TRectangle. Что мне не хватает?


person Martin Moore    schedule 03.04.2013    source источник


Ответы (3)


В XE3 встроенные системные стили (Win7, WIn8, Mac, MacHD) используют растровые изображения для стилей, а не создают стили из примитивов. Стиль содержит изображение png, которое разделено на разделы для каждого элемента управления и различных состояний этих элементов управления. TSubImage используется для выбора соответствующей части изображения. Это может иметь дочерние TRectAnimations для изменения выбранной области для разных состояний.

Вероятно, лучший способ изменить такой стиль — сохранить встроенное изображение (см. http://delphihaven.wordpress.com/2012/09/11/inspecting-the-default-platform-fmx-styles).-in-xe3/ ), измените его, добавьте в свою пользовательскую книгу стилей и укажите на него SubImage вашего пользовательского стиля.

Имейте в виду, однако, что вам нужно будет продублировать вышеуказанное для всех платформ, которые вы используете, чтобы стиль соответствовал и загружал соответствующий во время выполнения.

person Mike Sutton    schedule 03.04.2013
comment
Спасибо, тогда похоже на цвета по умолчанию!! Не уверен, почему кнопки обрабатываются таким образом, когда панелям и т. д. можно назначить цвет. - person Martin Moore; 04.04.2013
comment
Хотя Майк прав в том, что растровое отображение используется для связанных стилей XE3, все еще возможно создавать стили элементов управления из примитивов. Чтобы создать кнопку, используйте TLayout с дочерним элементом TRectangle и компонентом TText, дочерним элементом прямоугольника. Задайте для свойства StyleName текстовых компонентов значение Text (без кавычек). Из этого у вас есть действительный поиск стилей, доступный для использования с вашими кнопками. - person Scott P; 04.04.2013
comment
Согласен, @ScottPritchard, я предполагал, что ОП хотел сохранить исходный «внешний вид», но с другими цветами. Создание стиля из основ или старого файла стилей может резко отличаться от встроенного. - person Mike Sutton; 04.04.2013

И "buttonstyle", и "Cornerbuttonstyle" имеют "фон", который является TRectangle и имеет свойство заливки.

Вчера я столкнулся с похожей проблемой, пытаясь изменить цвет кнопки во время выполнения. В моем случае я пытался изменить свойство цвета, когда вид был установлен на градиент. Мне нужно было изменить либо цвета градиента, либо изменить вид на bkSolid.

person Martin    schedule 03.04.2013
comment
Я получаю стиль кнопок с фоном TSubImage, поэтому без заливки. - person Martin Moore; 04.04.2013
comment
Точные детали стиля зависят от стиля, который вы используете. Системные стили в XE3 используют изображения, XE2 и другие в XE3 используют примитивы. Если вы хотите изменить градиентную заливку, используйте TGradientAnimation. - person Mike Sutton; 04.04.2013

Я использую Токио, и я использовал стиль цвета морской волны, но я также хотел изменить синюю заливку на другой цвет. После некоторых исследований и возни, а комментарий Мартина оказался полезным, я смог изменить цвет кнопки с помощью книги стилей.

  1. Щелкните правой кнопкой мыши кнопку «Изменить пользовательский стиль».
  2. Найдите стиль кнопки и разверните. В моем сценарии стиль выглядит так:

введите здесь описание изображения

Для первого выбранного прямоугольника под моим фоновым прямоугольником в тот момент, когда я изменяю вид на что-то еще, кроме None, вы можете делать с ним все, что хотите. Залейте его сплошной заливкой Solid или залейте градиентом, изменив вид на Gradient.

person Frank Pedro    schedule 24.10.2018