Перейти к содержанию
Fire Monkey от А до Я
  • 0

Использование двух стилей в приложении...


HyperZen

Вопрос

Добрый день!

Создал свой стиль компонента TListView, как учил на вебинаре Евгений Крюков (Edit Custom Style).

Стиль простой - цвет фона - черный, цвет букв Item'а - светло серый, разделительная черта - светло серая.

В приложении хочу использовать что-то наподобие режимов дня и ночи. Данный стиль является "ночным".

Дефолтный стиль TListView использую как "дневной".

Вопрос в следующем: при переключении данных стилей в рантайме, наблюдается неправильная работа: цвет фона меняется корректно на всю высоту компонента, а вот цвет букв в видимой области не меняется, но стоит прокрутить TListView ниже видимой области - там цвет шрифта изменился, и так до конца списка можно создать такую вот непонятную "зебру".

Меняю стили при помощи свойства StyleLookup компонента TListView. В чем может быть проблема?

 

1.jpg

Изменено пользователем HyperZen
Ссылка на комментарий

Рекомендуемые сообщения

  • 0
  • Модераторы
В 18.06.2016 в 20:06, HyperZen сказал:

Добрый день!

Создал свой стиль компонента TListView, как учил на вебинаре Евгений Крюков (Edit Custom Style).

Стиль простой - цвет фона - черный, цвет букв Item'а - светло серый, разделительная черта - светло серая.

В приложении хочу использовать что-то наподобие режимов дня и ночи. Данный стиль является "ночным".

Дефолтный стиль TListView использую как "дневной".

Вопрос в следующем: при переключении данных стилей в рантайме, наблюдается неправильная работа: цвет фона меняется корректно на всю высоту компонента, а вот цвет букв в видимой области не меняется, но стоит прокрутить TListView ниже видимой области - там цвет шрифта изменился, и так до конца списка можно создать такую вот непонятную "зебру".

Меняю стили при помощи свойства StyleLookup компонента TListView. В чем может быть проблема?

как-то просмотрел ваш вопрос...

вам для Берлина или Сиетла?

Ссылка на комментарий
  • 0
  • Модераторы
13 минуты назад, HyperZen сказал:

Для Берлина.

вот посмотрите это решение

Изменено пользователем ZuBy
Ссылка на комментарий
  • 0

Отличный пример! Но наблюдается какая-то проблема с отрисовкой текста.

Хотелось бы, так сказать, стандартными средствами (путем создания своих стилей - что у меня сделано) изменять интерфейс программы по типу "день-ночь". Но вылазят какие-то странные артефакты при разукрашивании текста. Но после перезагрузки программы все работает корректно.

Не очень бы хотелось пользователю предлагать вариант "выйти-зайти" в приложение, для изменения режима "дня и ночи"...

Ссылка на комментарий
  • 0

Кто-то может привести пример, как говорится, "от и до" - как правильно создавать стили для компонентов. Например, найти цвет текста в стиле для TListBox мне так и не удалось.

Как я понимаю данные действия:

Создаем проект, кидаем на форму, например, TListView, кликаем правой кнопкой мыши по нему, жмем, в зависимости от необходимости либо Edit Default Style, либо Edit Custom Style, изменяем цвет фона, текста и пр. Можно тут же данный стиль сохранить как файл стиля.

Автоматически на форме при этом создается компонент StyleBook. Теперь, чтобы применить данный стиль необходимо изменять свойство StyleBook самой формы (это при условии, что мы использовали Edit Default Style, если использовали Custom - то надо переключать свойство  StyleLookup необходимых компонентов).

Чтобы вернуться на дефолтный стиль - кидаем на форму еще один StyleBook (вот тут вопрос - можно ли в одном стайлбуке использовать и переключать в рантайме стили?), в нем ставим стиль по-умолчанию.

Переключая данные стайлбуки в форме - меняем стиль приложения.

Верно? Укажите, пожалуйста, на мои ошибки.

Ссылка на комментарий
  • 0
  • Модераторы
3 минуты назад, HyperZen сказал:

Кто-то может привести пример, как говорится, "от и до" - как правильно создавать стили для компонентов. Например, найти цвет текста в стиле для TListBox мне так и не удалось.

Как я понимаю данные действия:

Создаем проект, кидаем на форму, например, TListView, кликаем правой кнопкой мыши по нему, жмем, в зависимости от необходимости либо Edit Default Style, либо Edit Custom Style, изменяем цвет фона, текста и пр. Можно тут же данный стиль сохранить как файл стиля.

Автоматически на форме при этом создается компонент StyleBook. Теперь, чтобы применить данный стиль необходимо изменять свойство StyleBook самой формы (это при условии, что мы использовали Edit Default Style, если использовали Custom - то надо переключать свойство  StyleLookup необходимых компонентов).

Чтобы вернуться на дефолтный стиль - кидаем на форму еще один StyleBook (вот тут вопрос - можно ли в одном стайлбуке использовать и переключать в рантайме стили?), в нем ставим стиль по-умолчанию.

Переключая данные стайлбуки в форме - меняем стиль приложения.

Верно? Укажите, пожалуйста, на мои ошибки.

можете в одном файле .style хранить сразу два режима, достаточно указать им stylename разные

а переключать стили изменяя Stylelookup компонента, и не забываем про ApplyStyleLookup NeedStylelookup

Ссылка на комментарий
  • 0
1 час назад, ZuBy сказал:

 

Проверил на чистом проекте, наблюдается такая же картина. Текст пропадает. Баг Берлина? Или Seattle так же себя ведет?

Ссылка на комментарий
  • 0
  • Модераторы
Только что, HyperZen сказал:

Проверил на чистом проекте, наблюдается такая же картина. Текст пропадает. Баг Берлина? Или Seattle так же себя ведет?

Берлин

Ссылка на комментарий
  • 0
1 час назад, ZuBy сказал:

а переключать стили изменяя Stylelookup компонента, и не забываем про ApplyStyleLookup NeedStylelookup

Вопрос: какое свойство стиля влияет на цвет текста TListBoxItem?

Ссылка на комментарий
  • 0
1 час назад, ZuBy сказал:

а переключать стили изменяя Stylelookup компонента, и не забываем про ApplyStyleLookup NeedStylelookup

По-моему как-то неудобно это. А если у меня на форме достаточно большое количество компонентов, все их перечислять трудновато.

Проще использовать другой StyleBook и переключать свойство самой формы. Не знаю на сколько это верно.

Ссылка на комментарий
  • 0

И еще вопрос: правильно ли я поступаю создавая стиль для TToolBar - кидаю на него компонент TRectangle, разукрашиваю его в цвет, который мне нужен. Ставлю Align = Client, например.

Как изменить цвет у Header компонента TListBox? Все тот же Rectangle?

Ссылка на комментарий
  • 0
  • Администраторы

Самый простой способ это сделать переключение стилей через TStyleManager. Делаете два стиля и переключаете их через TStyleManager. Как раз последний урок записал про это. 

Ссылка на комментарий
  • 0

HyperZen, извините, что не по теме. А как вы сделали границы формы синими(там где еще кнопки свернуть, закрыт и т.д.)? Просто они у меня белые. Или это от системы зависит?

Ссылка на комментарий
  • 0
  • Администраторы
В 7/9/2016 в 19:04, HyperZen сказал:

И еще вопрос: правильно ли я поступаю создавая стиль для TToolBar - кидаю на него компонент TRectangle, разукрашиваю его в цвет, который мне нужен. Ставлю Align = Client, например.

Как изменить цвет у Header компонента TListBox? Все тот же Rectangle?

В большинстве случаев стиль может быть любой структуры. Главное требование - это наличие специальных именованных объектов, с которыми компонент взаимодействует. В случае с тулбаром, он не работает со стилем. Поэтому вы можете использовать в стиле все что захотите. А если посмотрите в сторону TTintedStyleObject, то сможете сделать даже перекрашиваемый TToolBar!

Ссылка на комментарий
  • 0
  • Администраторы
2 часа назад, Шамсуддин сказал:

HyperZen, извините, что не по теме. А как вы сделали границы формы синими(там где еще кнопки свернуть, закрыт и т.д.)? Просто они у меня белые. Или это от системы зависит?

Зависит от системы, НО в FireMonkey можно сделать свой стиль рамки окна для Windows и в том числе разместить в шапке окна свои компоненты.

Ссылка на комментарий
  • 0
3 часа назад, Brovin Yaroslav сказал:

Зависит от системы, НО в FireMonkey можно сделать свой стиль рамки окна для Windows и в том числе разместить в шапке окна свои компоненты.

А как это реализовать?

Ссылка на комментарий

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

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