• 0
HyperZen

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

Вопросы

Добрый день!

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

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

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

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

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

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

 

1.jpg

Изменено пользователем HyperZen

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


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

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

  • 0

Как правильно использовать несколько стилей в одном приложении? Просвятите, пожалуйста, в теории...

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


Ссылка на сообщение
Поделиться на другие сайты
  • 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
В 07.07.2016 в 20:59, HyperZen сказал:

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

 

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


Ссылка на сообщение
Поделиться на другие сайты
  • 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 сказал:

в дизайнере 

2016-07-09_11-29-14.png

Спасибо большое! Я создавал стиль самого TListBox, а оказывается надо еще прицепом взять и TListBoxItem :) 

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


Ссылка на сообщение
Поделиться на другие сайты
  • 0
1 час назад, ZuBy сказал:

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

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

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

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


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

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

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

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


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

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

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


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

Спасибо большое! Ярослав, можете ответить на мой вопрос, который чуть выше?

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


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

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

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


Ссылка на сообщение
Поделиться на другие сайты
  • 0
3 часа назад, Шамсуддин сказал:

Или это от системы зависит?

Совершенно верно. Тема в операционке стоит такая.

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


Ссылка на сообщение
Поделиться на другие сайты
  • 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 и в том числе разместить в шапке окна свои компоненты.

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

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


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

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