• 0
HyperZen

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

Вопрос

Добрый день!

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

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

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

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

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

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

 

1.jpg

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

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


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

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

  • 0

Resize после смены стиля 

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


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

Resize

Пробовал, не помогает...

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


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

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

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0
В 18.06.2016 в 20:06, HyperZen сказал:

Добрый день!

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

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

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

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

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

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

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

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

HyperZen понравилось это

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


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

Для Берлина.

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


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

Для Берлина.

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

Изменено пользователем ZuBy
HyperZen понравилось это

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


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

HyperZen и Pax Beach понравилось это

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


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

 

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

Равиль Зарипов (ZuBy) понравилось это

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


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

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

Берлин

HyperZen понравилось это

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


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

HyperZen и Rusland понравилось это

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


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

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

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


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

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

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


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

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

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

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0
В 7/9/2016 в 19:04, HyperZen сказал:

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

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

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

HyperZen понравилось это

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


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

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

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

HyperZen и Шамсуддин понравилось это

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


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

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

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

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


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

Создайте аккаунт или войдите для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу